From 489691503d225ea718bf0900260f3df08390c8a8 Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Mon, 27 Oct 2025 11:38:11 +0100 Subject: [PATCH 01/33] handle bsvdm --- lib/AisParser.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/AisParser.js b/lib/AisParser.js index 9f47d28..f7fa69a 100644 --- a/lib/AisParser.js +++ b/lib/AisParser.js @@ -115,7 +115,7 @@ var AisParser = function () { if (parts !== 7) { return _AisMessage2.default.fromError('INVALID', 'Invalid count (!=7) of comma separated elements in message: [' + String(part) + ']'); } else { - if (part[0] !== '!AIVDM' && part[0] !== '!AIVDO') { + if (part[0] !== '!AIVDM' && part[0] !== '!AIVDO' && part[0] !== '!BSVDM') { return _AisMessage2.default.fromError('UNSUPPORTED', 'not a supported AIS message:[' + String(part) + ']'); } } From df043871b3575b4d43204d7d4a853b4bb38cce02 Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Mon, 27 Oct 2025 11:57:31 +0100 Subject: [PATCH 02/33] fix aisparser --- src/AisParser.js | 136 +++++++++++++++++++++++------------------------ 1 file changed, 68 insertions(+), 68 deletions(-) diff --git a/src/AisParser.js b/src/AisParser.js index 9b8b0d4..b356907 100644 --- a/src/AisParser.js +++ b/src/AisParser.js @@ -36,150 +36,150 @@ import Ais27Msg from './Ais27Msg'; // that where built like that but they were invalid in other ways too, // so I am hoping to get away like this. -export type ParseOptions = { checksum? : boolean; }; +export type ParseOptions = { checksum?: boolean; }; -export type Context = { [id : string] : { idx : number, aisStr: string } }; +export type Context = { [id: string]: { idx: number, aisStr: string } }; const MOD_NAME = 'AisParser'; const DEBUG = false class AisParser { - _context : Context; - _options : ParseOptions; + _context: Context; + _options: ParseOptions; - constructor(options : ParseOptions = {}) { + constructor(options: ParseOptions = {}) { this._options = options; this._context = {}; } - static checksumValid(sentence : string) : boolean { - if(!(sentence.startsWith('!AIVDO') || sentence.startsWith('!AIVDM'))) { + static checksumValid(sentence: string): boolean { + if (!(sentence.startsWith('!AIVDO') || sentence.startsWith('!AIVDM') || sentence.startsWith('!BSVDM'))) { return false; } let idx = sentence.indexOf('*'); - if((idx === -1) || (idx < 2)) { + if ((idx === -1) || (idx < 2)) { return false; } - let len : number = idx - 1; - let chkSum : number = 0; - let i : number; - if(DEBUG) console.log(MOD_NAME + '.checksumValid(' + sentence + ') on ' + sentence.substr(1,len)); - for(i = 1;i < idx;i++) { - // if(DEBUG) console.log(MOD_NAME + '.checksumValid() index:' + i + ' value:' + strBuf.readUInt8(i)); + let len: number = idx - 1; + let chkSum: number = 0; + let i: number; + if (DEBUG) console.log(MOD_NAME + '.checksumValid(' + sentence + ') on ' + sentence.substr(1, len)); + for (i = 1; i < idx; i++) { + // if(DEBUG) console.log(MOD_NAME + '.checksumValid() index:' + i + ' value:' + strBuf.readUInt8(i)); chkSum ^= sentence.charCodeAt(i) & 0xFF; } - let chkSumStr : string = chkSum.toString(16).toUpperCase(); - if(chkSumStr.length < 2) { + let chkSumStr: string = chkSum.toString(16).toUpperCase(); + if (chkSumStr.length < 2) { chkSumStr = '0' + chkSumStr; } - if(DEBUG && (chkSumStr !== sentence.substr(idx + 1))) { - console.warn(MOD_NAME + '.checksumValid(' + sentence + ') ' + chkSumStr+ '!==' + sentence.substr(idx + 1)); + if (DEBUG && (chkSumStr !== sentence.substr(idx + 1))) { + console.warn(MOD_NAME + '.checksumValid(' + sentence + ') ' + chkSumStr + '!==' + sentence.substr(idx + 1)); } return chkSumStr === sentence.substr(idx + 1); } - parse(sentence : string,options : ParseOptions = {}) : AisMessage { + parse(sentence: string, options: ParseOptions = {}): AisMessage { let checksum = (typeof options.checksum !== 'undefined') ? options.checksum : this._options.checksum; - if(checksum && !AisParser.checksumValid(sentence)) { - return AisMessage.fromError('INVALID','Invalid checksum in message: [' + sentence + ']'); + if (checksum && !AisParser.checksumValid(sentence)) { + return AisMessage.fromError('INVALID', 'Invalid checksum in message: [' + sentence + ']'); } return this.parseArray(sentence.split(',')) } // !AIVDM,1,1,,B,14`c;d002grD>PH50hr7RVE000SG,0*74 - parseArray(part : Array) : AisMessage { - let parts : number = part.length + parseArray(part: Array): AisMessage { + let parts: number = part.length - if(parts !== 7) { - return AisMessage.fromError('INVALID','Invalid count (!=7) of comma separated elements in message: [' + String(part) + ']'); + if (parts !== 7) { + return AisMessage.fromError('INVALID', 'Invalid count (!=7) of comma separated elements in message: [' + String(part) + ']'); } else { - if((part[0] !== '!AIVDM') && (part[0] !== '!AIVDO')) { - return AisMessage.fromError('UNSUPPORTED','not a supported AIS message:[' + String(part) + ']'); + if ((part[0] !== '!AIVDM') && (part[0] !== '!AIVDO') && (part[0] !== '!BSVDM')) { + return AisMessage.fromError('UNSUPPORTED', 'not a supported AIS message:[' + String(part) + ']'); } } - let msgCount : number = Number(part[1]); - let msgIdx : number = Number(part[2]); - let msgId : string = part[3]; - let padBit : number = Number(part[6].substr(0,1)); - let aisStr : string = part[5]; + let msgCount: number = Number(part[1]); + let msgIdx: number = Number(part[2]); + let msgId: string = part[3]; + let padBit: number = Number(part[6].substr(0, 1)); + let aisStr: string = part[5]; - if(msgCount > 1) { - if(msgIdx === msgCount) { + if (msgCount > 1) { + if (msgIdx === msgCount) { let msgParts = this._context[msgId]; - if(!msgParts) { - return AisMessage.fromError('INVALID','missing prior message(s) in partial message:[' + String(part) + ']'); + if (!msgParts) { + return AisMessage.fromError('INVALID', 'missing prior message(s) in partial message:[' + String(part) + ']'); } - if(msgIdx !== (msgParts.idx + 1)) { + if (msgIdx !== (msgParts.idx + 1)) { delete this._context[msgId]; - return AisMessage.fromError('INVALID','sequence violation (skipped or missing message) in partial message:[' + String(part) + ']'); + return AisMessage.fromError('INVALID', 'sequence violation (skipped or missing message) in partial message:[' + String(part) + ']'); } aisStr = msgParts.aisStr + aisStr; delete this._context[msgId]; } else { - if(padBit !== 0) { - return AisMessage.fromError('UNSUPPORTED','padbit!=0 not supported in partial message:[' + String(part) + ']'); + if (padBit !== 0) { + return AisMessage.fromError('UNSUPPORTED', 'padbit!=0 not supported in partial message:[' + String(part) + ']'); } let msgParts = this._context[msgId]; - if(msgIdx === 1) { - if(typeof msgParts !== 'undefined') { + if (msgIdx === 1) { + if (typeof msgParts !== 'undefined') { delete this._context[msgId]; - return AisMessage.fromError('INVALID','a message with this sequence and index already exists in partial message:[' + String(part) + ']'); + return AisMessage.fromError('INVALID', 'a message with this sequence and index already exists in partial message:[' + String(part) + ']'); } - this._context[msgId] = { idx : msgIdx, aisStr: aisStr }; - return AisMessage.fromError('INCOMPLETE',''); + this._context[msgId] = { idx: msgIdx, aisStr: aisStr }; + return AisMessage.fromError('INCOMPLETE', ''); } else { - if(!msgParts) { - return AisMessage.fromError('INVALID','missing prior message in partial message:[' + String(part) + ']'); + if (!msgParts) { + return AisMessage.fromError('INVALID', 'missing prior message in partial message:[' + String(part) + ']'); } - if(msgIdx !== (msgParts.idx + 1)) { + if (msgIdx !== (msgParts.idx + 1)) { delete this._context[msgId]; - return AisMessage.fromError('INVALID','sequence violation (skipped or missing message) in partial message:[' + String(part) + ']'); + return AisMessage.fromError('INVALID', 'sequence violation (skipped or missing message) in partial message:[' + String(part) + ']'); } msgParts.idx = msgIdx; msgParts.aisStr += aisStr; - return AisMessage.fromError('INCOMPLETE',''); + return AisMessage.fromError('INCOMPLETE', ''); } } } else { - if(msgIdx !== 1) { - return AisMessage.fromError('INVALID','invalid message index !=1 in non partial message:[' + String(part) + ']'); + if (msgIdx !== 1) { + return AisMessage.fromError('INVALID', 'invalid message index !=1 in non partial message:[' + String(part) + ']'); } } try { - let bitField : AisBitField = new AisBitField(aisStr,padBit); - let aisType : number = bitField.getInt(0,6,true); - switch(aisType) { + let bitField: AisBitField = new AisBitField(aisStr, padBit); + let aisType: number = bitField.getInt(0, 6, true); + switch (aisType) { case 1: case 2: case 3: - return new AisCNBMsg(aisType,bitField,part[4]); + return new AisCNBMsg(aisType, bitField, part[4]); case 4: - return new Ais04Msg(aisType,bitField,part[4]); + return new Ais04Msg(aisType, bitField, part[4]); case 5: - return new Ais05Msg(aisType,bitField,part[4]); + return new Ais05Msg(aisType, bitField, part[4]); case 8: - let sentence = new Ais08Msg(aisType,bitField,part[4]); + let sentence = new Ais08Msg(aisType, bitField, part[4]); if (sentence.dac == 200 && sentence.fid == 10) { - return new Ais08MsgDac200Fid10(aisType,bitField,part[4]); + return new Ais08MsgDac200Fid10(aisType, bitField, part[4]); } return sentence; case 14: - return new Ais14Msg(aisType,bitField,part[4]); + return new Ais14Msg(aisType, bitField, part[4]); case 18: - return new Ais18Msg(aisType,bitField,part[4]); + return new Ais18Msg(aisType, bitField, part[4]); case 19: - return new Ais19Msg(aisType,bitField,part[4]); + return new Ais19Msg(aisType, bitField, part[4]); case 21: - return new Ais21Msg(aisType,bitField,part[4]); + return new Ais21Msg(aisType, bitField, part[4]); case 24: - return new Ais24Msg(aisType,bitField,part[4]); + return new Ais24Msg(aisType, bitField, part[4]); case 27: - return new Ais27Msg(aisType,bitField,part[4]); + return new Ais27Msg(aisType, bitField, part[4]); default: return AisMessage.fromError( 'UNSUPPORTED', @@ -187,8 +187,8 @@ class AisParser { aisType, part[4]); } - } catch(error) { - return AisMessage.fromError('INVALID','Failed to parse message, error:' + error); + } catch (error) { + return AisMessage.fromError('INVALID', 'Failed to parse message, error:' + error); } } } From f7614de71226fec71878949b2c7364cfc44acd85 Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Mon, 27 Oct 2025 12:01:39 +0100 Subject: [PATCH 03/33] update compiled --- lib/AisParser.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/AisParser.js b/lib/AisParser.js index f7fa69a..3c67492 100644 --- a/lib/AisParser.js +++ b/lib/AisParser.js @@ -209,7 +209,7 @@ var AisParser = function () { }], [{ key: 'checksumValid', value: function checksumValid(sentence) { - if (!(sentence.startsWith('!AIVDO') || sentence.startsWith('!AIVDM'))) { + if (!(sentence.startsWith('!AIVDO') || sentence.startsWith('!AIVDM') || sentence.startsWith('!BSVDM'))) { return false; } From 36dfdb2a54c152177f83762768224eabc8567aa7 Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Mon, 27 Oct 2025 12:32:00 +0100 Subject: [PATCH 04/33] add more prefixes --- lib/AisParser.js | 4 ++-- src/AisParser.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/AisParser.js b/lib/AisParser.js index 3c67492..1a54f6d 100644 --- a/lib/AisParser.js +++ b/lib/AisParser.js @@ -115,7 +115,7 @@ var AisParser = function () { if (parts !== 7) { return _AisMessage2.default.fromError('INVALID', 'Invalid count (!=7) of comma separated elements in message: [' + String(part) + ']'); } else { - if (part[0] !== '!AIVDM' && part[0] !== '!AIVDO' && part[0] !== '!BSVDM') { + if (part[0] !== '!AIVDM' && part[0] !== '!AIVDO' && part[0] !== '!BSVDM' && part[0] !== '!ABVDM' && part[0] !== '!B2VDM') { return _AisMessage2.default.fromError('UNSUPPORTED', 'not a supported AIS message:[' + String(part) + ']'); } } @@ -209,7 +209,7 @@ var AisParser = function () { }], [{ key: 'checksumValid', value: function checksumValid(sentence) { - if (!(sentence.startsWith('!AIVDO') || sentence.startsWith('!AIVDM') || sentence.startsWith('!BSVDM'))) { + if (!(sentence.startsWith('!AIVDO') || sentence.startsWith('!AIVDM') || sentence.startsWith('!BSVDM') || sentence.startsWith('!ABVDM') || sentence.startsWith('!B2VDM'))) { return false; } diff --git a/src/AisParser.js b/src/AisParser.js index b356907..2c22840 100644 --- a/src/AisParser.js +++ b/src/AisParser.js @@ -53,7 +53,7 @@ class AisParser { } static checksumValid(sentence: string): boolean { - if (!(sentence.startsWith('!AIVDO') || sentence.startsWith('!AIVDM') || sentence.startsWith('!BSVDM'))) { + if (!(sentence.startsWith('!AIVDO') || sentence.startsWith('!AIVDM') || sentence.startsWith('!BSVDM') || sentence.startsWith('!ABVDM') || sentence.startsWith('!B2VDM'))) { return false; } @@ -96,7 +96,7 @@ class AisParser { if (parts !== 7) { return AisMessage.fromError('INVALID', 'Invalid count (!=7) of comma separated elements in message: [' + String(part) + ']'); } else { - if ((part[0] !== '!AIVDM') && (part[0] !== '!AIVDO') && (part[0] !== '!BSVDM')) { + if ((part[0] !== '!AIVDM') && (part[0] !== '!AIVDO') && (part[0] !== '!BSVDM') && (part[0] !== '!ABVDM') && (part[0] !== '!B2VDM')) { return AisMessage.fromError('UNSUPPORTED', 'not a supported AIS message:[' + String(part) + ']'); } } From cdcaea9346b9dd527266b182c191566a48834372 Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Mon, 27 Oct 2025 12:33:53 +0100 Subject: [PATCH 05/33] add b1vdm --- lib/AisParser.js | 4 ++-- src/AisParser.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/AisParser.js b/lib/AisParser.js index 1a54f6d..766f2e4 100644 --- a/lib/AisParser.js +++ b/lib/AisParser.js @@ -115,7 +115,7 @@ var AisParser = function () { if (parts !== 7) { return _AisMessage2.default.fromError('INVALID', 'Invalid count (!=7) of comma separated elements in message: [' + String(part) + ']'); } else { - if (part[0] !== '!AIVDM' && part[0] !== '!AIVDO' && part[0] !== '!BSVDM' && part[0] !== '!ABVDM' && part[0] !== '!B2VDM') { + if (part[0] !== '!AIVDM' && part[0] !== '!AIVDO' && part[0] !== '!BSVDM' && part[0] !== '!ABVDM' && part[0] !== '!B2VDM' && part[0] !== '!B1VDM') { return _AisMessage2.default.fromError('UNSUPPORTED', 'not a supported AIS message:[' + String(part) + ']'); } } @@ -209,7 +209,7 @@ var AisParser = function () { }], [{ key: 'checksumValid', value: function checksumValid(sentence) { - if (!(sentence.startsWith('!AIVDO') || sentence.startsWith('!AIVDM') || sentence.startsWith('!BSVDM') || sentence.startsWith('!ABVDM') || sentence.startsWith('!B2VDM'))) { + if (!(sentence.startsWith('!AIVDO') || sentence.startsWith('!AIVDM') || sentence.startsWith('!BSVDM') || sentence.startsWith('!ABVDM') || sentence.startsWith('!B2VDM') || sentence.startsWith('!B1VDM'))) { return false; } diff --git a/src/AisParser.js b/src/AisParser.js index 2c22840..0b2d12b 100644 --- a/src/AisParser.js +++ b/src/AisParser.js @@ -53,7 +53,7 @@ class AisParser { } static checksumValid(sentence: string): boolean { - if (!(sentence.startsWith('!AIVDO') || sentence.startsWith('!AIVDM') || sentence.startsWith('!BSVDM') || sentence.startsWith('!ABVDM') || sentence.startsWith('!B2VDM'))) { + if (!(sentence.startsWith('!AIVDO') || sentence.startsWith('!AIVDM') || sentence.startsWith('!BSVDM') || sentence.startsWith('!ABVDM') || sentence.startsWith('!B2VDM') || sentence.startsWith('!B1VDM'))) { return false; } @@ -96,7 +96,7 @@ class AisParser { if (parts !== 7) { return AisMessage.fromError('INVALID', 'Invalid count (!=7) of comma separated elements in message: [' + String(part) + ']'); } else { - if ((part[0] !== '!AIVDM') && (part[0] !== '!AIVDO') && (part[0] !== '!BSVDM') && (part[0] !== '!ABVDM') && (part[0] !== '!B2VDM')) { + if ((part[0] !== '!AIVDM') && (part[0] !== '!AIVDO') && (part[0] !== '!BSVDM') && (part[0] !== '!ABVDM') && (part[0] !== '!B2VDM') && (part[0] !== '!B1VDM')) { return AisMessage.fromError('UNSUPPORTED', 'not a supported AIS message:[' + String(part) + ']'); } } From 8fc2650c5ca94d4a2c0089e9a2a67328e3369d40 Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Mon, 27 Oct 2025 12:35:21 +0100 Subject: [PATCH 06/33] add anvdo --- lib/AisParser.js | 4 ++-- src/AisParser.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/AisParser.js b/lib/AisParser.js index 766f2e4..6131f91 100644 --- a/lib/AisParser.js +++ b/lib/AisParser.js @@ -115,7 +115,7 @@ var AisParser = function () { if (parts !== 7) { return _AisMessage2.default.fromError('INVALID', 'Invalid count (!=7) of comma separated elements in message: [' + String(part) + ']'); } else { - if (part[0] !== '!AIVDM' && part[0] !== '!AIVDO' && part[0] !== '!BSVDM' && part[0] !== '!ABVDM' && part[0] !== '!B2VDM' && part[0] !== '!B1VDM') { + if (part[0] !== '!AIVDM' && part[0] !== '!AIVDO' && part[0] !== '!BSVDM' && part[0] !== '!ABVDM' && part[0] !== '!B2VDM' && part[0] !== '!B1VDM' && part[0] !== '!ANVDO') { return _AisMessage2.default.fromError('UNSUPPORTED', 'not a supported AIS message:[' + String(part) + ']'); } } @@ -209,7 +209,7 @@ var AisParser = function () { }], [{ key: 'checksumValid', value: function checksumValid(sentence) { - if (!(sentence.startsWith('!AIVDO') || sentence.startsWith('!AIVDM') || sentence.startsWith('!BSVDM') || sentence.startsWith('!ABVDM') || sentence.startsWith('!B2VDM') || sentence.startsWith('!B1VDM'))) { + if (!(sentence.startsWith('!AIVDO') || sentence.startsWith('!AIVDM') || sentence.startsWith('!BSVDM') || sentence.startsWith('!ABVDM') || sentence.startsWith('!B2VDM') || sentence.startsWith('!B1VDM') || sentence.startsWith('!ANVDO'))) { return false; } diff --git a/src/AisParser.js b/src/AisParser.js index 0b2d12b..b044e99 100644 --- a/src/AisParser.js +++ b/src/AisParser.js @@ -53,7 +53,7 @@ class AisParser { } static checksumValid(sentence: string): boolean { - if (!(sentence.startsWith('!AIVDO') || sentence.startsWith('!AIVDM') || sentence.startsWith('!BSVDM') || sentence.startsWith('!ABVDM') || sentence.startsWith('!B2VDM') || sentence.startsWith('!B1VDM'))) { + if (!(sentence.startsWith('!AIVDO') || sentence.startsWith('!AIVDM') || sentence.startsWith('!BSVDM') || sentence.startsWith('!ABVDM') || sentence.startsWith('!B2VDM') || sentence.startsWith('!B1VDM') || sentence.startsWith('!ANVDO'))) { return false; } @@ -96,7 +96,7 @@ class AisParser { if (parts !== 7) { return AisMessage.fromError('INVALID', 'Invalid count (!=7) of comma separated elements in message: [' + String(part) + ']'); } else { - if ((part[0] !== '!AIVDM') && (part[0] !== '!AIVDO') && (part[0] !== '!BSVDM') && (part[0] !== '!ABVDM') && (part[0] !== '!B2VDM') && (part[0] !== '!B1VDM')) { + if ((part[0] !== '!AIVDM') && (part[0] !== '!AIVDO') && (part[0] !== '!BSVDM') && (part[0] !== '!ABVDM') && (part[0] !== '!B2VDM') && (part[0] !== '!B1VDM') && (part[0] !== '!ANVDO')) { return AisMessage.fromError('UNSUPPORTED', 'not a supported AIS message:[' + String(part) + ']'); } } From 0aa9dafae23433cab243c8c10f08adc720290117 Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Sat, 8 Nov 2025 12:41:25 +0100 Subject: [PATCH 07/33] shrink start string checks --- src/AisParser.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/AisParser.js b/src/AisParser.js index b044e99..b218aa7 100644 --- a/src/AisParser.js +++ b/src/AisParser.js @@ -42,6 +42,8 @@ export type Context = { [id: string]: { idx: number, aisStr: string } }; const MOD_NAME = 'AisParser'; const DEBUG = false +const VALID_STARTS = ['!AIVDO', '!AIVDM', '!BSVDM', '!ABVDM', '!B2VDM', '!B1VDM', '!ANVDO']; + class AisParser { _context: Context; @@ -53,7 +55,7 @@ class AisParser { } static checksumValid(sentence: string): boolean { - if (!(sentence.startsWith('!AIVDO') || sentence.startsWith('!AIVDM') || sentence.startsWith('!BSVDM') || sentence.startsWith('!ABVDM') || sentence.startsWith('!B2VDM') || sentence.startsWith('!B1VDM') || sentence.startsWith('!ANVDO'))) { + if (!VALID_STARTS.some(prefix => sentence.startsWith(prefix))) { return false; } @@ -96,7 +98,7 @@ class AisParser { if (parts !== 7) { return AisMessage.fromError('INVALID', 'Invalid count (!=7) of comma separated elements in message: [' + String(part) + ']'); } else { - if ((part[0] !== '!AIVDM') && (part[0] !== '!AIVDO') && (part[0] !== '!BSVDM') && (part[0] !== '!ABVDM') && (part[0] !== '!B2VDM') && (part[0] !== '!B1VDM') && (part[0] !== '!ANVDO')) { + if (!VALID_STARTS.includes(part[0])) { return AisMessage.fromError('UNSUPPORTED', 'not a supported AIS message:[' + String(part) + ']'); } } From 761468558509aca32a3dfded32fc7bbfe9ceae1c Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Sat, 8 Nov 2025 12:41:37 +0100 Subject: [PATCH 08/33] add missing 374 as panama --- lib/AisMessage.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/AisMessage.js b/lib/AisMessage.js index e873c50..2d63f66 100644 --- a/lib/AisMessage.js +++ b/lib/AisMessage.js @@ -286,6 +286,7 @@ var MID_TO_COUNTRY = { "371": ["Panama (Republic of)", "PA"], "372": ["Panama (Republic of)", "PA"], "373": ["Panama (Republic of)", "PA"], + "374": ["Panama (Republic of)", "PA"], "375": ["Saint Vincent and the Grenadines", "VC"], "376": ["Saint Vincent and the Grenadines", "VC"], "377": ["Saint Vincent and the Grenadines", "VC"], From 1ef5a7bd0261f8789aea07a54a9651f54064faf5 Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Sat, 8 Nov 2025 16:11:31 +0100 Subject: [PATCH 09/33] compile --- .vscode/settings.json | 3 +++ lib/AisParser.js | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..ab7667d --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "javascript.validate.enable": false +} \ No newline at end of file diff --git a/lib/AisParser.js b/lib/AisParser.js index 6131f91..ec177d3 100644 --- a/lib/AisParser.js +++ b/lib/AisParser.js @@ -82,6 +82,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons var MOD_NAME = 'AisParser'; var DEBUG = false; +var VALID_STARTS = ['!AIVDO', '!AIVDM', '!BSVDM', '!ABVDM', '!B2VDM', '!B1VDM', '!ANVDO']; var AisParser = function () { function AisParser() { @@ -115,7 +116,7 @@ var AisParser = function () { if (parts !== 7) { return _AisMessage2.default.fromError('INVALID', 'Invalid count (!=7) of comma separated elements in message: [' + String(part) + ']'); } else { - if (part[0] !== '!AIVDM' && part[0] !== '!AIVDO' && part[0] !== '!BSVDM' && part[0] !== '!ABVDM' && part[0] !== '!B2VDM' && part[0] !== '!B1VDM' && part[0] !== '!ANVDO') { + if (!VALID_STARTS.includes(part[0])) { return _AisMessage2.default.fromError('UNSUPPORTED', 'not a supported AIS message:[' + String(part) + ']'); } } @@ -209,7 +210,9 @@ var AisParser = function () { }], [{ key: 'checksumValid', value: function checksumValid(sentence) { - if (!(sentence.startsWith('!AIVDO') || sentence.startsWith('!AIVDM') || sentence.startsWith('!BSVDM') || sentence.startsWith('!ABVDM') || sentence.startsWith('!B2VDM') || sentence.startsWith('!B1VDM') || sentence.startsWith('!ANVDO'))) { + if (!VALID_STARTS.some(function (prefix) { + return sentence.startsWith(prefix); + })) { return false; } From 72156d0455c78243048be033532cd8e08c583764 Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Sat, 8 Nov 2025 16:35:32 +0100 Subject: [PATCH 10/33] add other ais message start types --- lib/AisParser.js | 2 +- src/AisParser.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/AisParser.js b/lib/AisParser.js index ec177d3..679bf50 100644 --- a/lib/AisParser.js +++ b/lib/AisParser.js @@ -82,7 +82,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons var MOD_NAME = 'AisParser'; var DEBUG = false; -var VALID_STARTS = ['!AIVDO', '!AIVDM', '!BSVDM', '!ABVDM', '!B2VDM', '!B1VDM', '!ANVDO']; +var VALID_STARTS = ['!AIVDO', '!AIVDM', '!BSVDM', '!ABVDM', '!B2VDM', '!B1VDM', '!ANVDO', '!BSVDO']; var AisParser = function () { function AisParser() { diff --git a/src/AisParser.js b/src/AisParser.js index b218aa7..c8a29da 100644 --- a/src/AisParser.js +++ b/src/AisParser.js @@ -41,8 +41,8 @@ export type ParseOptions = { checksum?: boolean; }; export type Context = { [id: string]: { idx: number, aisStr: string } }; const MOD_NAME = 'AisParser'; -const DEBUG = false -const VALID_STARTS = ['!AIVDO', '!AIVDM', '!BSVDM', '!ABVDM', '!B2VDM', '!B1VDM', '!ANVDO']; +const DEBUG = false; +const VALID_STARTS = ['!AIVDO', '!AIVDM', '!BSVDM', '!ABVDM', '!B2VDM', '!B1VDM', '!ANVDO', '!BSVDO']; class AisParser { From b3974f6343f8b6d28af0b350bde8acdd21488fa0 Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Sat, 8 Nov 2025 16:37:50 +0100 Subject: [PATCH 11/33] add more vdm and vdo messages --- lib/AisParser.js | 2 +- src/AisParser.js | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/AisParser.js b/lib/AisParser.js index 679bf50..eabdc51 100644 --- a/lib/AisParser.js +++ b/lib/AisParser.js @@ -82,7 +82,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons var MOD_NAME = 'AisParser'; var DEBUG = false; -var VALID_STARTS = ['!AIVDO', '!AIVDM', '!BSVDM', '!ABVDM', '!B2VDM', '!B1VDM', '!ANVDO', '!BSVDO']; +var VALID_STARTS = ['!AIVDO', '!AIVDM', '!ANVDM', '!ABVDM', '!ANVDO', '!BSVDM', '!B2VDM', '!B1VDM', '!BSVDO']; var AisParser = function () { function AisParser() { diff --git a/src/AisParser.js b/src/AisParser.js index c8a29da..424e334 100644 --- a/src/AisParser.js +++ b/src/AisParser.js @@ -42,7 +42,10 @@ export type Context = { [id: string]: { idx: number, aisStr: string } }; const MOD_NAME = 'AisParser'; const DEBUG = false; -const VALID_STARTS = ['!AIVDO', '!AIVDM', '!BSVDM', '!ABVDM', '!B2VDM', '!B1VDM', '!ANVDO', '!BSVDO']; +const VALID_STARTS = [ + '!AIVDO', '!AIVDM', '!ANVDM', '!ABVDM', '!ANVDO', + '!BSVDM', '!B2VDM', '!B1VDM', '!BSVDO' +]; class AisParser { From 498f47805141c2bc061e364d74f80c921631d183 Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Sun, 16 Nov 2025 12:47:24 +0100 Subject: [PATCH 12/33] handle msg8dac1fid31 --- lib/Ais08MsgDac1Fid31.js | 454 +++++++++++++++++++++++++++++++++++++ lib/Ais08MsgDac200Fid10.js | 2 +- lib/AisParser.js | 9 +- src/Ais08MsgDac1Fid31.js | 350 ++++++++++++++++++++++++++++ src/Ais08MsgDac200Fid10.js | 2 +- src/AisParser.js | 6 +- 6 files changed, 819 insertions(+), 4 deletions(-) create mode 100644 lib/Ais08MsgDac1Fid31.js create mode 100644 src/Ais08MsgDac1Fid31.js diff --git a/lib/Ais08MsgDac1Fid31.js b/lib/Ais08MsgDac1Fid31.js new file mode 100644 index 0000000..996afdd --- /dev/null +++ b/lib/Ais08MsgDac1Fid31.js @@ -0,0 +1,454 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _AisBitField = require('./AisBitField'); + +var _AisBitField2 = _interopRequireDefault(_AisBitField); + +var _AisMessage2 = require('./AisMessage'); + +var _AisMessage3 = _interopRequireDefault(_AisMessage2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/* + * AisParser: A parser for NMEA0183 AIS messages. + * Copyright (C) 2025 Davide Gessa . + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the Apache License Version 2.0 as published by + * Apache Software foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the Apache License Version 2.0 + * along with this program. If not, see . + */ + +var MOD_NAME = 'Ais8MsgDac1Fid31'; + +var SUPPORTED_FIELDS = ['aisType', 'channel', 'repeatInd', 'mmsi', 'dac', 'fid', 'longitude', 'latitude', 'posAccuracy', 'utcDay', 'utcHour', 'utcMinute', 'avgWindSpeed', 'avgGustSpeed', 'avgWindDirection', 'avgGustDirection', 'airTemperature', 'relativeHumidity', 'dewPoint', 'airPressure', 'airPressureTendency', 'horizontalVisibility', 'waterLevel', 'waterLevelTrend', 'curr1Speed', 'curr1Direction', 'curr2Speed', 'curr2Direction', 'curr2Level', 'curr3Speed', 'curr3Direction', 'curr3Level', 'sigWaveHeight', 'wavePeriod', 'waveDirection', 'swellHeight', 'swellPeriod', 'swellDirection', 'seaState', 'waterTemperature', 'precipitationType', 'salinity', 'ice']; + +var suppValuesValid = false; +var suppValues = {}; + +/* +|============================================================================== +|Field |Len |Description |Member |T|Units +|0-5 | 6 |Message Type |type |u|Constant: 14 +|6-7 | 2 |Repeat Indicator |repeat |u|Message repeat count +|8-37 | 30 |MMSI |mmsi |u|9 decimal digits +|38-39 | 2 |spare | |u|not used +|40-49 | 10 |Designated area code |dac |u| +|50-55 | 6 |Function identifier |fid |u| +|56-80 | 25 |Longitude |lon |I4| Long in 1/1000 min, +-180 deg as per 2's complement (e => +, w => -, 181 not available) +|81-104 | 24 |Latitude |lat |I4| Lat in 1/1000 min, +-90 deg as per 2's complement (n => +, s => -, 91 not available) +|105 | 1 |Position Accuracy |accuracy |u| +|106-110 | 5 |Day (UTC) |day |u|1-31; 0 = N/A (default) +|111-115 | 5 |Hour (UTC) |hour |u|0-23; 24 = N/A (default) +|116-121 | 6 |Minute (UTC) |minute |u|0-59; 60 = N/A (default) +|122-128 | 7 |Avg 10-min wind speed|avg_wind_speed |u|0-125 knots; 127 = N/A (default) +|129-135 | 7 |Avg 10-min gust speed|avg_gust_speed |u|0-125 knots; 127 = N/A (default) +|136-144 | 9 |Avg 10-min wind direction|avg_wind_dir |u|0-359 degree; 360 = N/A (default) +|145-153 | 9 |Avg 10-min gust direction|avg_gust_dir |u|0-359 degree; 360 = N/A (default) +|154-164 | 11 |Air Temperature |air_temp |I4|Dry bulb temp, 0.1°C steps, -60.0 to +60.0°C (-1024=N/A, 601–1023 reserved) +|165-171 | 7 |Relative Humidity |rel_humidity |u |0–100%, 101=N/A, 102–127 reserved +|172-181 | 10 |Dew Point |dew_point |I4|-20.0 to +50.0°C, 0.1°C steps, -511–501 reserved, 501=N/A +|182-190 | 9 |Air Pressure |air_pressure |u |0=799 hPa/less, 1–401=800–1200 hPa, 402=1201+/N/A=511 +|191-192 | 2 |Air Pressure Tendency |air_press_tend |u |0=steady, 1=decr, 2=incr, 3=N/A +|193-200 | 8 |Horizontal Visibility |horiz_visibility |u |0–126 (0.1 NM steps, up to 12.6 NM); 127=N/A +|201-212 | 12 |Water Level (incl. tide) |water_level |u |0–4000 (add -10.0); 4001=N/A; 4002–4095 reserved +|213-214 | 2 |Water Level Trend |wl_trend |u |0=steady, 1=decr, 2=incr, 3=N/A +|215-222 | 8 |Surface Current Speed |curr1_speed |u |0–251 (0.1kt steps, 25.1->/N/A) +|223-231 | 9 |Surface Current Direction |curr1_dir |u |0–359°, 360=N/A +|232-239 | 8 |Current Speed #2 |curr2_speed |u |Same as above +|240-248 | 9 |Current Direction #2 |curr2_dir |u |Same as curr1_dir +|249-253 | 5 |Current Measuring Lv. #2 |curr2_level |u |0–30 m, 31=N/A +|254-261 | 8 |Current Speed #3 |curr3_speed |u |Same as above +|262-270 | 9 |Current Direction #3 |curr3_dir |u |Same as curr1_dir +|271-275 | 5 |Current Measuring Lv. #3 |curr3_level |u |0–30 m, 31=N/A +|276-283 | 8 |Significant Wave Height |sig_wave_height |u |0–251 (0.1 m), 251=N/A +|284-289 | 6 |Wave Period |wave_period |u |0–60 s, 61=N/A +|290-298 | 9 |Wave Direction |wave_dir |u |0–359°, 360=N/A +|299-306 | 8 |Swell Height |swell_height |u |0–251 (0.1 m), 251=N/A +|307-312 | 6 |Swell Period |swell_period |u |0–60 s, 61=N/A +|313-321 | 9 |Swell Direction |swell_dir |u |0–359°, 360=N/A +|322-325 | 4 |Sea State |sea_state |u |Beaufort Code +|326-335 | 10 |Water Temperature |water_temp |I4|-10.0 to +50.0°C, 0.1°C steps, 501=N/A +|336-338 | 3 |Precipitation Type |precip_type |u |0=reserved, 1=rain, 2=thunderstorm, 3=freezing, 4=mixed/ice, 5=snow +|339-347 | 9 |Salinity |salinity |u |0–500 (0.1 ppt, 50+ reserved/N/A) +|348-349 | 2 |Ice |ice |u |0=no, 1=yes +|350-359 | 10 |Spare | |u |Not used, set to zero +|============================================================================== +*/ + +var Ais8MsgDac1Fid31 = function (_AisMessage) { + _inherits(Ais8MsgDac1Fid31, _AisMessage); + + function Ais8MsgDac1Fid31(aisType, bitField, channel) { + _classCallCheck(this, Ais8MsgDac1Fid31); + + var _this = _possibleConstructorReturn(this, (Ais8MsgDac1Fid31.__proto__ || Object.getPrototypeOf(Ais8MsgDac1Fid31)).call(this, aisType, bitField, channel)); + + if (bitField.bits == 360) { + _this._valid = 'VALID'; + } else { + _this._valid = 'INVALID'; + _this._errMsg = 'invalid bitcount for type 8 msg dac 1 fid 31:' + bitField.bits; + } + return _this; + } + + _createClass(Ais8MsgDac1Fid31, [{ + key: 'class', + get: function get() { + return 'A'; + } + }, { + key: 'supportedValues', + get: function get() { + if (!suppValuesValid) { + SUPPORTED_FIELDS.forEach(function (field) { + var unit = _AisMessage3.default.getUnit(field); + if (unit) { + suppValues[field] = unit; + } else { + console.warn(MOD_NAME + 'field without unit encountered:' + field); + } + }); + suppValuesValid = true; + } + return suppValues; + } + + // |40-49 | 10 |Designated area code |dac |u| + + }, { + key: 'dac', + get: function get() { + return this._bitField.getInt(40, 10, true); + } + + // |50-55 | 6 |Function identifier |fid |u| + + }, { + key: 'fid', + get: function get() { + return this._bitField.getInt(50, 6, true); + } + + // |56-80 | 25 |Longitude |longitude |I4| Longitude in 1/1000 min, ±180 deg by 2's complement; 181 = not available + + }, { + key: 'longitude', + get: function get() { + return this._bitField.getSignedInt(56, 25, true); + } + + // |81-104 | 24 |Latitude |latitude |I4| Latitude in 1/1000 min, ±90 deg by 2's complement; 91 = not available + + }, { + key: 'latitude', + get: function get() { + return this._bitField.getSignedInt(81, 24, true); + } + + // |105 | 1 |Position Accuracy |posAccuracy |u| 1 = < 10m, 0 = > 10m + + }, { + key: 'posAccuracy', + get: function get() { + return this._bitField.getInt(105, 1, true); + } + + // |106-110 | 5 |Day (UTC) |utcDay |u| 1-31; 0 = not available + + }, { + key: 'utcDay', + get: function get() { + return this._bitField.getInt(106, 5, true); + } + + // |111-115 | 5 |Hour (UTC) |utcHour |u| 0-23; 24 = not available + + }, { + key: 'utcHour', + get: function get() { + return this._bitField.getInt(111, 5, true); + } + + // |116-121 | 6 |Minute (UTC) |utcMinute |u| 0-59; 60 = not available + + }, { + key: 'utcMinute', + get: function get() { + return this._bitField.getInt(116, 6, true); + } + + // |122-128 | 7 |Average Wind Speed |avgWindSpeed |u| 0-125 knots; 127 = not available + + }, { + key: 'avgWindSpeed', + get: function get() { + return this._bitField.getInt(122, 7, true); + } + + // |129-135 | 7 |Wind Gust |avgGustSpeed |u| 0-125 knots; 127 = not available + + }, { + key: 'avgGustSpeed', + get: function get() { + return this._bitField.getInt(129, 7, true); + } + + // |136-144 | 9 |Wind Direction |avgWindDirection |u| 0-359 deg; 360 = not available + + }, { + key: 'avgWindDirection', + get: function get() { + return this._bitField.getInt(136, 9, true); + } + + // |145-153 | 9 |Wind Gust Direction |avgGustDirection |u| 0-359 deg; 360 = not available + + }, { + key: 'avgGustDirection', + get: function get() { + return this._bitField.getInt(145, 9, true); + } + + // |154-164 | 11 |Air Temperature |airTemperature |I4| In 0.1 °C steps, -60.0 to +60.0°C; -1024 = not available + + }, { + key: 'airTemperature', + get: function get() { + return this._bitField.getSignedInt(154, 11, true); + } + + // |165-171 | 7 |Relative Humidity |relativeHumidity |u| 0-100%; 101 = not available + + }, { + key: 'relativeHumidity', + get: function get() { + return this._bitField.getInt(165, 7, true); + } + + // |172-181 | 10 |Dew Point |dewPoint |I4| -20.0 to +50.0 °C; 501 = not available + + }, { + key: 'dewPoint', + get: function get() { + return this._bitField.getSignedInt(172, 10, true); + } + + // |182-190 | 9 |Air Pressure |airPressure |u| 800-1200 hPa; 511 = not available + + }, { + key: 'airPressure', + get: function get() { + return this._bitField.getInt(182, 9, true); + } + + // |191-192 | 2 |Air Pressure Tendency |airPressureTendency |u| 0=steady, 1=decreasing, 2=increasing, 3=not available + + }, { + key: 'airPressureTendency', + get: function get() { + return this._bitField.getInt(191, 2, true); + } + + // |193-200 | 8 |Horizontal Visibility |horizontalVisibility |u| 0-126 (0.1NM); 127 = not available + + }, { + key: 'horizontalVisibility', + get: function get() { + return this._bitField.getInt(193, 8, true); + } + + // |201-212 | 12 |Water Level (incl. tide) |waterLevel |u| 0-4000 (add -10.0); 4001 = not available + + }, { + key: 'waterLevel', + get: function get() { + return this._bitField.getInt(201, 12, true); + } + + // |213-214 | 2 |Water Level Trend |waterLevelTrend |u| 0=steady, 1=decreasing, 2=increasing, 3=not available + + }, { + key: 'waterLevelTrend', + get: function get() { + return this._bitField.getInt(213, 2, true); + } + + // |215-222 | 8 |Surface Current Speed |curr1Speed |u| 0-251 (0.1kt); 251+ = not available + + }, { + key: 'curr1Speed', + get: function get() { + return this._bitField.getInt(215, 8, true); + } + + // |223-231 | 9 |Surface Current Direction|curr1Direction |u| 0-359 deg; 360 = not available + + }, { + key: 'curr1Direction', + get: function get() { + return this._bitField.getInt(223, 9, true); + } + + // |232-239 | 8 |Current Speed #2 |curr2Speed |u| Same encoding as curr1Speed + + }, { + key: 'curr2Speed', + get: function get() { + return this._bitField.getInt(232, 8, true); + } + + // |240-248 | 9 |Current Direction #2 |curr2Direction |u| Same encoding as curr1Direction + + }, { + key: 'curr2Direction', + get: function get() { + return this._bitField.getInt(240, 9, true); + } + + // |249-253 | 5 |Current Measuring Lv #2 |curr2Level |u| 0-30 m, 31 = not available + + }, { + key: 'curr2Level', + get: function get() { + return this._bitField.getInt(249, 5, true); + } + + // |254-261 | 8 |Current Speed #3 |curr3Speed |u| Same encoding as curr1Speed + + }, { + key: 'curr3Speed', + get: function get() { + return this._bitField.getInt(254, 8, true); + } + + // |262-270 | 9 |Current Direction #3 |curr3Direction |u| Same encoding as curr1Direction + + }, { + key: 'curr3Direction', + get: function get() { + return this._bitField.getInt(262, 9, true); + } + + // |271-275 | 5 |Current Measuring Lv #3 |curr3Level |u| 0-30 m, 31 = not available + + }, { + key: 'curr3Level', + get: function get() { + return this._bitField.getInt(271, 5, true); + } + + // |276-283 | 8 |Significant Wave Height |sigWaveHeight |u| 0-251 (0.1m); 251+ = not available + + }, { + key: 'sigWaveHeight', + get: function get() { + return this._bitField.getInt(276, 8, true); + } + + // |284-289 | 6 |Wave Period |wavePeriod |u| 0-60 s; 61+ = not available + + }, { + key: 'wavePeriod', + get: function get() { + return this._bitField.getInt(284, 6, true); + } + + // |290-298 | 9 |Wave Direction |waveDirection |u| 0-359 deg; 360+ = not available + + }, { + key: 'waveDirection', + get: function get() { + return this._bitField.getInt(290, 9, true); + } + + // |299-306 | 8 |Swell Height |swellHeight |u| 0-251 (0.1m); 251+ = not available + + }, { + key: 'swellHeight', + get: function get() { + return this._bitField.getInt(299, 8, true); + } + + // |307-312 | 6 |Swell Period |swellPeriod |u| 0-60 s; 61+ = not available + + }, { + key: 'swellPeriod', + get: function get() { + return this._bitField.getInt(307, 6, true); + } + + // |313-321 | 9 |Swell Direction |swellDirection |u| 0-359 deg; 360+ = not available + + }, { + key: 'swellDirection', + get: function get() { + return this._bitField.getInt(313, 9, true); + } + + // |322-325 | 4 |Sea State |seaState |u| Beaufort code + + }, { + key: 'seaState', + get: function get() { + return this._bitField.getInt(322, 4, true); + } + + // |326-335 | 10 |Water Temperature |waterTemperature |I4| -10.0 to +50.0°C (0.1°C); 501 = not available + + }, { + key: 'waterTemperature', + get: function get() { + return this._bitField.getSignedInt(326, 10, true); + } + + // |336-338 | 3 |Precipitation Type |precipitationType |u| 0=reserved, 1=rain, …, 5=snow + + }, { + key: 'precipitationType', + get: function get() { + return this._bitField.getInt(336, 3, true); + } + + // |339-347 | 9 |Salinity |salinity |u| 0-500 (0.1 ppt), 510 = not available + + }, { + key: 'salinity', + get: function get() { + return this._bitField.getInt(339, 9, true); + } + + // |348-349 | 2 |Ice |ice |u| 0=no, 1=yes, 2=reserved, 3=not available + + }, { + key: 'ice', + get: function get() { + return this._bitField.getInt(348, 2, true); + } + }]); + + return Ais8MsgDac1Fid31; +}(_AisMessage3.default); + +exports.default = Ais8MsgDac1Fid31; diff --git a/lib/Ais08MsgDac200Fid10.js b/lib/Ais08MsgDac200Fid10.js index cfec141..73bc0bb 100644 --- a/lib/Ais08MsgDac200Fid10.js +++ b/lib/Ais08MsgDac200Fid10.js @@ -24,7 +24,7 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" /* * AisParser: A parser for NMEA0183 AIS messages. - * Copyright (C) 2017 Thomas Runte . + * Copyright (C) 2025 Davide Gessa . * * This program is free software: you can redistribute it and/or modify * it under the terms of the Apache License Version 2.0 as published by diff --git a/lib/AisParser.js b/lib/AisParser.js index eabdc51..6da26fd 100644 --- a/lib/AisParser.js +++ b/lib/AisParser.js @@ -4,7 +4,8 @@ var _createClass = function () { function defineProperties(target, props) { for /* * AisParser: A parser for NMEA0183 AIS messages. - * Copyright (C) 2017 Thomas Runte . + * Copyright (C) 2017-2024 Thomas Runte . + * Copyright (C) 2025 Davide Gessa . * * This program is free software: you can redistribute it and/or modify * it under the terms of the Apache License Version 2.0 as published by @@ -47,6 +48,10 @@ var _Ais08MsgDac200Fid = require('./Ais08MsgDac200Fid10'); var _Ais08MsgDac200Fid2 = _interopRequireDefault(_Ais08MsgDac200Fid); +var _Ais08MsgDac1Fid = require('./Ais08MsgDac1Fid31'); + +var _Ais08MsgDac1Fid2 = _interopRequireDefault(_Ais08MsgDac1Fid); + var _Ais14Msg = require('./Ais14Msg'); var _Ais14Msg2 = _interopRequireDefault(_Ais14Msg); @@ -186,6 +191,8 @@ var AisParser = function () { var sentence = new _Ais08Msg2.default(aisType, bitField, part[4]); if (sentence.dac == 200 && sentence.fid == 10) { return new _Ais08MsgDac200Fid2.default(aisType, bitField, part[4]); + } else if (sentence.dac == 1 && sentence.fid == 31) { + return new _Ais08MsgDac1Fid2.default(aisType, bitField, part[4]); } return sentence; case 14: diff --git a/src/Ais08MsgDac1Fid31.js b/src/Ais08MsgDac1Fid31.js new file mode 100644 index 0000000..d668423 --- /dev/null +++ b/src/Ais08MsgDac1Fid31.js @@ -0,0 +1,350 @@ +// @flow + +/* + * AisParser: A parser for NMEA0183 AIS messages. + * Copyright (C) 2025 Davide Gessa . + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the Apache License Version 2.0 as published by + * Apache Software foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the Apache License Version 2.0 + * along with this program. If not, see . + */ + +import AisBitField from './AisBitField'; +import AisMessage from './AisMessage'; +import type { SuppValues } from './AisMessage'; + +const MOD_NAME = 'Ais8MsgDac1Fid31'; + +const SUPPORTED_FIELDS = [ + 'aisType', + 'channel', + 'repeatInd', + 'mmsi', + 'dac', + 'fid', + 'longitude', + 'latitude', + 'posAccuracy', + 'utcDay', + 'utcHour', + 'utcMinute', + 'avgWindSpeed', + 'avgGustSpeed', + 'avgWindDirection', + 'avgGustDirection', + 'airTemperature', + 'relativeHumidity', + 'dewPoint', + 'airPressure', + 'airPressureTendency', + 'horizontalVisibility', + 'waterLevel', + 'waterLevelTrend', + 'curr1Speed', + 'curr1Direction', + 'curr2Speed', + 'curr2Direction', + 'curr2Level', + 'curr3Speed', + 'curr3Direction', + 'curr3Level', + 'sigWaveHeight', + 'wavePeriod', + 'waveDirection', + 'swellHeight', + 'swellPeriod', + 'swellDirection', + 'seaState', + 'waterTemperature', + 'precipitationType', + 'salinity', + 'ice' +]; + +let suppValuesValid = false; +let suppValues: SuppValues = {}; + +/* +|============================================================================== +|Field |Len |Description |Member |T|Units +|0-5 | 6 |Message Type |type |u|Constant: 14 +|6-7 | 2 |Repeat Indicator |repeat |u|Message repeat count +|8-37 | 30 |MMSI |mmsi |u|9 decimal digits +|38-39 | 2 |spare | |u|not used +|40-49 | 10 |Designated area code |dac |u| +|50-55 | 6 |Function identifier |fid |u| +|56-80 | 25 |Longitude |lon |I4| Long in 1/1000 min, +-180 deg as per 2's complement (e => +, w => -, 181 not available) +|81-104 | 24 |Latitude |lat |I4| Lat in 1/1000 min, +-90 deg as per 2's complement (n => +, s => -, 91 not available) +|105 | 1 |Position Accuracy |accuracy |u| +|106-110 | 5 |Day (UTC) |day |u|1-31; 0 = N/A (default) +|111-115 | 5 |Hour (UTC) |hour |u|0-23; 24 = N/A (default) +|116-121 | 6 |Minute (UTC) |minute |u|0-59; 60 = N/A (default) +|122-128 | 7 |Avg 10-min wind speed|avg_wind_speed |u|0-125 knots; 127 = N/A (default) +|129-135 | 7 |Avg 10-min gust speed|avg_gust_speed |u|0-125 knots; 127 = N/A (default) +|136-144 | 9 |Avg 10-min wind direction|avg_wind_dir |u|0-359 degree; 360 = N/A (default) +|145-153 | 9 |Avg 10-min gust direction|avg_gust_dir |u|0-359 degree; 360 = N/A (default) +|154-164 | 11 |Air Temperature |air_temp |I4|Dry bulb temp, 0.1°C steps, -60.0 to +60.0°C (-1024=N/A, 601–1023 reserved) +|165-171 | 7 |Relative Humidity |rel_humidity |u |0–100%, 101=N/A, 102–127 reserved +|172-181 | 10 |Dew Point |dew_point |I4|-20.0 to +50.0°C, 0.1°C steps, -511–501 reserved, 501=N/A +|182-190 | 9 |Air Pressure |air_pressure |u |0=799 hPa/less, 1–401=800–1200 hPa, 402=1201+/N/A=511 +|191-192 | 2 |Air Pressure Tendency |air_press_tend |u |0=steady, 1=decr, 2=incr, 3=N/A +|193-200 | 8 |Horizontal Visibility |horiz_visibility |u |0–126 (0.1 NM steps, up to 12.6 NM); 127=N/A +|201-212 | 12 |Water Level (incl. tide) |water_level |u |0–4000 (add -10.0); 4001=N/A; 4002–4095 reserved +|213-214 | 2 |Water Level Trend |wl_trend |u |0=steady, 1=decr, 2=incr, 3=N/A +|215-222 | 8 |Surface Current Speed |curr1_speed |u |0–251 (0.1kt steps, 25.1->/N/A) +|223-231 | 9 |Surface Current Direction |curr1_dir |u |0–359°, 360=N/A +|232-239 | 8 |Current Speed #2 |curr2_speed |u |Same as above +|240-248 | 9 |Current Direction #2 |curr2_dir |u |Same as curr1_dir +|249-253 | 5 |Current Measuring Lv. #2 |curr2_level |u |0–30 m, 31=N/A +|254-261 | 8 |Current Speed #3 |curr3_speed |u |Same as above +|262-270 | 9 |Current Direction #3 |curr3_dir |u |Same as curr1_dir +|271-275 | 5 |Current Measuring Lv. #3 |curr3_level |u |0–30 m, 31=N/A +|276-283 | 8 |Significant Wave Height |sig_wave_height |u |0–251 (0.1 m), 251=N/A +|284-289 | 6 |Wave Period |wave_period |u |0–60 s, 61=N/A +|290-298 | 9 |Wave Direction |wave_dir |u |0–359°, 360=N/A +|299-306 | 8 |Swell Height |swell_height |u |0–251 (0.1 m), 251=N/A +|307-312 | 6 |Swell Period |swell_period |u |0–60 s, 61=N/A +|313-321 | 9 |Swell Direction |swell_dir |u |0–359°, 360=N/A +|322-325 | 4 |Sea State |sea_state |u |Beaufort Code +|326-335 | 10 |Water Temperature |water_temp |I4|-10.0 to +50.0°C, 0.1°C steps, 501=N/A +|336-338 | 3 |Precipitation Type |precip_type |u |0=reserved, 1=rain, 2=thunderstorm, 3=freezing, 4=mixed/ice, 5=snow +|339-347 | 9 |Salinity |salinity |u |0–500 (0.1 ppt, 50+ reserved/N/A) +|348-349 | 2 |Ice |ice |u |0=no, 1=yes +|350-359 | 10 |Spare | |u |Not used, set to zero +|============================================================================== +*/ + +export default class Ais8MsgDac1Fid31 extends AisMessage { + constructor(aisType: number, bitField: AisBitField, channel: string) { + super(aisType, bitField, channel); + if (bitField.bits == 360) { + this._valid = 'VALID'; + } else { + this._valid = 'INVALID'; + this._errMsg = 'invalid bitcount for type 8 msg dac 1 fid 31:' + bitField.bits; + } + } + + get class(): string { + return 'A'; + } + + get supportedValues(): SuppValues { + if (!suppValuesValid) { + SUPPORTED_FIELDS.forEach((field) => { + let unit = AisMessage.getUnit(field); + if (unit) { + suppValues[field] = unit; + } else { + console.warn(MOD_NAME + 'field without unit encountered:' + field); + } + }); + suppValuesValid = true; + } + return suppValues; + } + + + // |40-49 | 10 |Designated area code |dac |u| + get dac() : number { + return this._bitField.getInt(40,10,true); + } + + // |50-55 | 6 |Function identifier |fid |u| + get fid() : number { + return this._bitField.getInt(50,6,true); + } + + // |56-80 | 25 |Longitude |longitude |I4| Longitude in 1/1000 min, ±180 deg by 2's complement; 181 = not available + get longitude(): number { + return this._bitField.getSignedInt(56, 25, true); + } + + // |81-104 | 24 |Latitude |latitude |I4| Latitude in 1/1000 min, ±90 deg by 2's complement; 91 = not available + get latitude(): number { + return this._bitField.getSignedInt(81, 24, true); + } + + // |105 | 1 |Position Accuracy |posAccuracy |u| 1 = < 10m, 0 = > 10m + get posAccuracy(): number { + return this._bitField.getInt(105, 1, true); + } + + // |106-110 | 5 |Day (UTC) |utcDay |u| 1-31; 0 = not available + get utcDay(): number { + return this._bitField.getInt(106, 5, true); + } + + // |111-115 | 5 |Hour (UTC) |utcHour |u| 0-23; 24 = not available + get utcHour(): number { + return this._bitField.getInt(111, 5, true); + } + + // |116-121 | 6 |Minute (UTC) |utcMinute |u| 0-59; 60 = not available + get utcMinute(): number { + return this._bitField.getInt(116, 6, true); + } + + // |122-128 | 7 |Average Wind Speed |avgWindSpeed |u| 0-125 knots; 127 = not available + get avgWindSpeed(): number { + return this._bitField.getInt(122, 7, true); + } + + // |129-135 | 7 |Wind Gust |avgGustSpeed |u| 0-125 knots; 127 = not available + get avgGustSpeed(): number { + return this._bitField.getInt(129, 7, true); + } + + // |136-144 | 9 |Wind Direction |avgWindDirection |u| 0-359 deg; 360 = not available + get avgWindDirection(): number { + return this._bitField.getInt(136, 9, true); + } + + // |145-153 | 9 |Wind Gust Direction |avgGustDirection |u| 0-359 deg; 360 = not available + get avgGustDirection(): number { + return this._bitField.getInt(145, 9, true); + } + + // |154-164 | 11 |Air Temperature |airTemperature |I4| In 0.1 °C steps, -60.0 to +60.0°C; -1024 = not available + get airTemperature(): number { + return this._bitField.getSignedInt(154, 11, true); + } + + // |165-171 | 7 |Relative Humidity |relativeHumidity |u| 0-100%; 101 = not available + get relativeHumidity(): number { + return this._bitField.getInt(165, 7, true); + } + + // |172-181 | 10 |Dew Point |dewPoint |I4| -20.0 to +50.0 °C; 501 = not available + get dewPoint(): number { + return this._bitField.getSignedInt(172, 10, true); + } + + // |182-190 | 9 |Air Pressure |airPressure |u| 800-1200 hPa; 511 = not available + get airPressure(): number { + return this._bitField.getInt(182, 9, true); + } + + // |191-192 | 2 |Air Pressure Tendency |airPressureTendency |u| 0=steady, 1=decreasing, 2=increasing, 3=not available + get airPressureTendency(): number { + return this._bitField.getInt(191, 2, true); + } + + // |193-200 | 8 |Horizontal Visibility |horizontalVisibility |u| 0-126 (0.1NM); 127 = not available + get horizontalVisibility(): number { + return this._bitField.getInt(193, 8, true); + } + + // |201-212 | 12 |Water Level (incl. tide) |waterLevel |u| 0-4000 (add -10.0); 4001 = not available + get waterLevel(): number { + return this._bitField.getInt(201, 12, true); + } + + // |213-214 | 2 |Water Level Trend |waterLevelTrend |u| 0=steady, 1=decreasing, 2=increasing, 3=not available + get waterLevelTrend(): number { + return this._bitField.getInt(213, 2, true); + } + + // |215-222 | 8 |Surface Current Speed |curr1Speed |u| 0-251 (0.1kt); 251+ = not available + get curr1Speed(): number { + return this._bitField.getInt(215, 8, true); + } + + // |223-231 | 9 |Surface Current Direction|curr1Direction |u| 0-359 deg; 360 = not available + get curr1Direction(): number { + return this._bitField.getInt(223, 9, true); + } + + // |232-239 | 8 |Current Speed #2 |curr2Speed |u| Same encoding as curr1Speed + get curr2Speed(): number { + return this._bitField.getInt(232, 8, true); + } + + // |240-248 | 9 |Current Direction #2 |curr2Direction |u| Same encoding as curr1Direction + get curr2Direction(): number { + return this._bitField.getInt(240, 9, true); + } + + // |249-253 | 5 |Current Measuring Lv #2 |curr2Level |u| 0-30 m, 31 = not available + get curr2Level(): number { + return this._bitField.getInt(249, 5, true); + } + + // |254-261 | 8 |Current Speed #3 |curr3Speed |u| Same encoding as curr1Speed + get curr3Speed(): number { + return this._bitField.getInt(254, 8, true); + } + + // |262-270 | 9 |Current Direction #3 |curr3Direction |u| Same encoding as curr1Direction + get curr3Direction(): number { + return this._bitField.getInt(262, 9, true); + } + + // |271-275 | 5 |Current Measuring Lv #3 |curr3Level |u| 0-30 m, 31 = not available + get curr3Level(): number { + return this._bitField.getInt(271, 5, true); + } + + // |276-283 | 8 |Significant Wave Height |sigWaveHeight |u| 0-251 (0.1m); 251+ = not available + get sigWaveHeight(): number { + return this._bitField.getInt(276, 8, true); + } + + // |284-289 | 6 |Wave Period |wavePeriod |u| 0-60 s; 61+ = not available + get wavePeriod(): number { + return this._bitField.getInt(284, 6, true); + } + + // |290-298 | 9 |Wave Direction |waveDirection |u| 0-359 deg; 360+ = not available + get waveDirection(): number { + return this._bitField.getInt(290, 9, true); + } + + // |299-306 | 8 |Swell Height |swellHeight |u| 0-251 (0.1m); 251+ = not available + get swellHeight(): number { + return this._bitField.getInt(299, 8, true); + } + + // |307-312 | 6 |Swell Period |swellPeriod |u| 0-60 s; 61+ = not available + get swellPeriod(): number { + return this._bitField.getInt(307, 6, true); + } + + // |313-321 | 9 |Swell Direction |swellDirection |u| 0-359 deg; 360+ = not available + get swellDirection(): number { + return this._bitField.getInt(313, 9, true); + } + + // |322-325 | 4 |Sea State |seaState |u| Beaufort code + get seaState(): number { + return this._bitField.getInt(322, 4, true); + } + + // |326-335 | 10 |Water Temperature |waterTemperature |I4| -10.0 to +50.0°C (0.1°C); 501 = not available + get waterTemperature(): number { + return this._bitField.getSignedInt(326, 10, true); + } + + // |336-338 | 3 |Precipitation Type |precipitationType |u| 0=reserved, 1=rain, …, 5=snow + get precipitationType(): number { + return this._bitField.getInt(336, 3, true); + } + + // |339-347 | 9 |Salinity |salinity |u| 0-500 (0.1 ppt), 510 = not available + get salinity(): number { + return this._bitField.getInt(339, 9, true); + } + + // |348-349 | 2 |Ice |ice |u| 0=no, 1=yes, 2=reserved, 3=not available + get ice(): number { + return this._bitField.getInt(348, 2, true); + } +} diff --git a/src/Ais08MsgDac200Fid10.js b/src/Ais08MsgDac200Fid10.js index c31661e..bf6a558 100644 --- a/src/Ais08MsgDac200Fid10.js +++ b/src/Ais08MsgDac200Fid10.js @@ -2,7 +2,7 @@ /* * AisParser: A parser for NMEA0183 AIS messages. - * Copyright (C) 2017 Thomas Runte . + * Copyright (C) 2025 Davide Gessa . * * This program is free software: you can redistribute it and/or modify * it under the terms of the Apache License Version 2.0 as published by diff --git a/src/AisParser.js b/src/AisParser.js index 424e334..ce53a9f 100644 --- a/src/AisParser.js +++ b/src/AisParser.js @@ -2,7 +2,8 @@ /* * AisParser: A parser for NMEA0183 AIS messages. - * Copyright (C) 2017 Thomas Runte . + * Copyright (C) 2017-2024 Thomas Runte . + * Copyright (C) 2025 Davide Gessa . * * This program is free software: you can redistribute it and/or modify * it under the terms of the Apache License Version 2.0 as published by @@ -24,6 +25,7 @@ import Ais04Msg from './Ais04Msg'; import Ais05Msg from './Ais05Msg'; import Ais08Msg from './Ais08Msg'; import Ais08MsgDac200Fid10 from './Ais08MsgDac200Fid10'; +import Ais08MsgDac1Fid31 from './Ais08MsgDac1Fid31'; import Ais14Msg from './Ais14Msg'; import Ais18Msg from './Ais18Msg'; import Ais19Msg from './Ais19Msg'; @@ -171,6 +173,8 @@ class AisParser { let sentence = new Ais08Msg(aisType, bitField, part[4]); if (sentence.dac == 200 && sentence.fid == 10) { return new Ais08MsgDac200Fid10(aisType, bitField, part[4]); + } else if (sentence.dac == 1 && sentence.fid == 31) { + return new Ais08MsgDac1Fid31(aisType, bitField, part[4]); } return sentence; case 14: From 018a430e016e51a9d5c6d75ed8182626d33c15e0 Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Sun, 16 Nov 2025 13:44:56 +0100 Subject: [PATCH 13/33] improve testing --- src/__tests__/AisParserTest.js | 7 +- .../testHelper/AisBitfieldDataGenerator.js | 64 +++++++++++-------- 2 files changed, 45 insertions(+), 26 deletions(-) diff --git a/src/__tests__/AisParserTest.js b/src/__tests__/AisParserTest.js index 45782f0..3d14ff5 100644 --- a/src/__tests__/AisParserTest.js +++ b/src/__tests__/AisParserTest.js @@ -14,7 +14,12 @@ test('testing real data ', () => { while (rad = getRealAisData()) { let msg: AisMessage = parser.parse(rad.aisStr) expect(msg).toBeDefined() - expect(msg.valid).toBe('VALID') + expect(msg.valid).toBe(rad.valid) expect(msg.aisType).toBe(rad.aisType) + + for (let j in msg.supportedValues) { + // console.log(j, msg[j]) + expect(msg[j]).toBeDefined() + } } }) diff --git a/src/__tests__/testHelper/AisBitfieldDataGenerator.js b/src/__tests__/testHelper/AisBitfieldDataGenerator.js index 3b4989d..011d514 100644 --- a/src/__tests__/testHelper/AisBitfieldDataGenerator.js +++ b/src/__tests__/testHelper/AisBitfieldDataGenerator.js @@ -23,20 +23,34 @@ export type TestData = { export type RealData = { aisStr: string, - channel : string, - aisType : number, - valid : boolean + channel: string, + aisType: number, + valid: boolean } -const AIS_REAL_DATA : Array = [ - { aisStr : '!AIVDM,1,1,,B,14`c;d002grD>PH50hr7RVE000SG,0*74', - channel : 'B', - aisType : 1, - valid: true }, - { aisStr : '!AIVDM,1,1,,B,34hwN60Oh3rCwib56`qJtbL<0000,0*12', - channel : 'B', - aisType : 3, - valid: true } +const AIS_REAL_DATA: Array = [ + { + aisStr: '!AIVDM,1,1,,B,14`c;d002grD>PH50hr7RVE000SG,0*74', + channel: 'B', + aisType: 1, + valid: 'VALID' + }, + { + aisStr: '!AIVDM,1,1,,B,34hwN60Oh3rCwib56`qJtbL<0000,0*12', + channel: 'B', + aisType: 3, + valid: 'VALID' + }, { + aisStr: '!AIVDM,1,1,,B,8Njjo600GhI5KaCNf234j9ITFPFU5uFagwl?wnSwe7wvlOwwsAwwnSGmwvh0,0*73', + channel: 'B', + aisType: 8, + valid: 'VALID' + }, { + aisStr: '!AIVDO,1,1,,,B39i>1001FTu;bQAlAMscwe5kP06,0*3E', + channel: 'B', + aisType: 18, + valid: 'VALID' + } ] /* @@ -150,7 +164,7 @@ let realDataIdx = 0 -function isValidString(str: string): string { +function isValidString(str: string): string { let idx: number = 0 for (; idx < str.length; idx++) { if (AIS_OUT_CHR_TBL.indexOf(str.charAt(idx)) < 0) { @@ -165,7 +179,7 @@ function isValidString(str: string): string { function createTestData(): TestData { // enough bits to read a 32 bit integer or a 6 character string - 7 * 6 - 5 = 37 bits minimum let count = rand.intBetween(7, 100) - let tmp : string = '' + let tmp: string = '' let idx: number = 0 for (; idx < count; idx++) { // one of the legal characters @@ -185,28 +199,28 @@ function createTestData(): TestData { function createStringTestData(): TestData { - let result : TestData = createTestData() + let result: TestData = createTestData() result.start = rand.intBetween(0, result.bits - 6) result.numBits = rand.intBetween(0, (result.bits - result.start) / 6) * 6 return result } function createInvalidStringTestData(): TestData { - let result : TestData = createTestData() + let result: TestData = createTestData() - let failIdx = rand.intBetween(0,result.aisStr.length - 1) - result.numBits = rand.intBetween(1,result.aisStr.length - 1) * 6 + let failIdx = rand.intBetween(0, result.aisStr.length - 1) + result.numBits = rand.intBetween(1, result.aisStr.length - 1) * 6 result.aisStr = result.aisStr.substr(0, failIdx) + 'X' + result.aisStr.substr(failIdx + 1) let stMin = failIdx * 6 - result.numBits - 1 - if(stMin < 0) { + if (stMin < 0) { stMin = 0 } let stMax = failIdx * 6 - 1 - result.start = rand.intBetween(stMin,stMax) - if((result.start + result.numBits) >= result.bits) { + result.start = rand.intBetween(stMin, stMax) + if ((result.start + result.numBits) >= result.bits) { result.start = result.bits - result.numBits } @@ -214,14 +228,14 @@ function createInvalidStringTestData(): TestData { } function createIntTestData(): TestData { - let result : TestData = createTestData() + let result: TestData = createTestData() result.numBits = rand.intBetween(1, 32) result.start = rand.intBetween(0, result.bits - result.numBits) return result } -function getRealAisData() : ?RealData { - if(realDataIdx < AIS_REAL_DATA.length) { +function getRealAisData(): ?RealData { + if (realDataIdx < AIS_REAL_DATA.length) { return AIS_REAL_DATA[realDataIdx++] } } @@ -232,5 +246,5 @@ module.exports = { createStringTestData: createStringTestData, createInvalidStringTestData: createInvalidStringTestData, createIntTestData: createIntTestData, - getRealAisData : getRealAisData + getRealAisData: getRealAisData } \ No newline at end of file From dcd59fd688fd2f52e795fc099fd2f6979f78bee5 Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Sun, 16 Nov 2025 13:45:21 +0100 Subject: [PATCH 14/33] 7msgdac1fid31 typing --- lib/Ais08Msg.js | 2 +- lib/Ais08MsgDac1Fid31.js | 297 ++++++-- lib/Ais27Msg.js | 2 +- lib/AisMessage.js | 37 +- src/Ais08Msg.js | 2 +- src/Ais08MsgDac1Fid31.js | 289 ++++++-- src/Ais27Msg.js | 2 +- src/AisMessage.js | 1425 +++++++++++++++++++------------------- 8 files changed, 1254 insertions(+), 802 deletions(-) diff --git a/lib/Ais08Msg.js b/lib/Ais08Msg.js index 8d7c9bd..23f98a5 100644 --- a/lib/Ais08Msg.js +++ b/lib/Ais08Msg.js @@ -24,7 +24,7 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" /* * AisParser: A parser for NMEA0183 AIS messages. - * Copyright (C) 2017 Thomas Runte . + * Copyright (C) 2025 Davide Gessa . * * This program is free software: you can redistribute it and/or modify * it under the terms of the Apache License Version 2.0 as published by diff --git a/lib/Ais08MsgDac1Fid31.js b/lib/Ais08MsgDac1Fid31.js index 996afdd..f8f229e 100644 --- a/lib/Ais08MsgDac1Fid31.js +++ b/lib/Ais08MsgDac1Fid31.js @@ -114,6 +114,35 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { } _createClass(Ais8MsgDac1Fid31, [{ + key: '_getRawLon', + + + // |56-80 | 25 |Longitude |longitude |I4| Longitude in 1/1000 min, ±180 deg by 2's complement; 181 = not available + value: function _getRawLon() { + return this._bitField.getInt(56, 25, false) * 10; + } + + // |81-104 | 24 |Latitude |latitude |I4| Latitude in 1/1000 min, ±90 deg by 2's complement; 91 = not available + + }, { + key: '_getRawLat', + value: function _getRawLat() { + return this._bitField.getInt(81, 24, false) * 10; + } + + // // |56-80 | 25 |Longitude |longitude |I4| Longitude in 1/1000 min, ±180 deg by 2's complement; 181 = not available + // get longitude(): number { + // return this._bitField.getInt(56, 25, false); + // } + + // // |81-104 | 24 |Latitude |latitude |I4| Latitude in 1/1000 min, ±90 deg by 2's complement; 91 = not available + // get latitude(): number { + // return this._bitField.getInt(81, 24, false); + // } + + // |105 | 1 |Position Accuracy |posAccuracy |u| 1 = < 10m, 0 = > 10m + + }, { key: 'class', get: function get() { return 'A'; @@ -150,29 +179,10 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { get: function get() { return this._bitField.getInt(50, 6, true); } - - // |56-80 | 25 |Longitude |longitude |I4| Longitude in 1/1000 min, ±180 deg by 2's complement; 181 = not available - - }, { - key: 'longitude', - get: function get() { - return this._bitField.getSignedInt(56, 25, true); - } - - // |81-104 | 24 |Latitude |latitude |I4| Latitude in 1/1000 min, ±90 deg by 2's complement; 91 = not available - - }, { - key: 'latitude', - get: function get() { - return this._bitField.getSignedInt(81, 24, true); - } - - // |105 | 1 |Position Accuracy |posAccuracy |u| 1 = < 10m, 0 = > 10m - }, { key: 'posAccuracy', get: function get() { - return this._bitField.getInt(105, 1, true); + return this._bitField.getInt(105, 1, true) === 1; } // |106-110 | 5 |Day (UTC) |utcDay |u| 1-31; 0 = not available @@ -180,7 +190,7 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'utcDay', get: function get() { - return this._bitField.getInt(106, 5, true); + return this._bitField.getInt(106, 5, true) || NaN; } // |111-115 | 5 |Hour (UTC) |utcHour |u| 0-23; 24 = not available @@ -188,7 +198,12 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'utcHour', get: function get() { - return this._bitField.getInt(111, 5, true); + var val = this._bitField.getInt(111, 5, true); + if (val >= 24) { + return NaN; + } else { + return val; + } } // |116-121 | 6 |Minute (UTC) |utcMinute |u| 0-59; 60 = not available @@ -196,7 +211,12 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'utcMinute', get: function get() { - return this._bitField.getInt(116, 6, true); + var val = this._bitField.getInt(116, 6, true); + if (val >= 60) { + return NaN; + } else { + return val; + } } // |122-128 | 7 |Average Wind Speed |avgWindSpeed |u| 0-125 knots; 127 = not available @@ -204,7 +224,12 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'avgWindSpeed', get: function get() { - return this._bitField.getInt(122, 7, true); + var val = this._bitField.getInt(122, 7, true); + if (val >= 127) { + return NaN; + } else { + return val; + } } // |129-135 | 7 |Wind Gust |avgGustSpeed |u| 0-125 knots; 127 = not available @@ -212,7 +237,12 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'avgGustSpeed', get: function get() { - return this._bitField.getInt(129, 7, true); + var val = this._bitField.getInt(129, 7, true); + if (val >= 127) { + return NaN; + } else { + return val; + } } // |136-144 | 9 |Wind Direction |avgWindDirection |u| 0-359 deg; 360 = not available @@ -220,7 +250,12 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'avgWindDirection', get: function get() { - return this._bitField.getInt(136, 9, true); + var val = this._bitField.getInt(136, 9, true); + if (val >= 360) { + return NaN; + } else { + return val; + } } // |145-153 | 9 |Wind Gust Direction |avgGustDirection |u| 0-359 deg; 360 = not available @@ -228,7 +263,12 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'avgGustDirection', get: function get() { - return this._bitField.getInt(145, 9, true); + var val = this._bitField.getInt(145, 9, true); + if (val >= 360) { + return NaN; + } else { + return val; + } } // |154-164 | 11 |Air Temperature |airTemperature |I4| In 0.1 °C steps, -60.0 to +60.0°C; -1024 = not available @@ -236,7 +276,12 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'airTemperature', get: function get() { - return this._bitField.getSignedInt(154, 11, true); + var val = this._bitField.getInt(154, 11, false); + if (val == -1024) { + return NaN; + } else { + return val / 10.0; + } } // |165-171 | 7 |Relative Humidity |relativeHumidity |u| 0-100%; 101 = not available @@ -244,7 +289,12 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'relativeHumidity', get: function get() { - return this._bitField.getInt(165, 7, true); + var val = this._bitField.getInt(165, 7, true); + if (val >= 101) { + return NaN; + } else { + return val; + } } // |172-181 | 10 |Dew Point |dewPoint |I4| -20.0 to +50.0 °C; 501 = not available @@ -252,7 +302,12 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'dewPoint', get: function get() { - return this._bitField.getSignedInt(172, 10, true); + var val = this._bitField.getInt(172, 10, false); + if (val >= 501) { + return NaN; + } else { + return val / 10.0; + } } // |182-190 | 9 |Air Pressure |airPressure |u| 800-1200 hPa; 511 = not available @@ -260,7 +315,12 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'airPressure', get: function get() { - return this._bitField.getInt(182, 9, true); + var val = this._bitField.getInt(182, 9, true); + if (val >= 511) { + return NaN; + } else { + return val; + } } // |191-192 | 2 |Air Pressure Tendency |airPressureTendency |u| 0=steady, 1=decreasing, 2=increasing, 3=not available @@ -268,7 +328,17 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'airPressureTendency', get: function get() { - return this._bitField.getInt(191, 2, true); + var val = this._bitField.getInt(191, 2, true); + switch (val) { + case 0: + return 'STEADY'; + case 1: + return 'DECREASING'; + case 2: + return 'INCREASING'; + default: + return 'NA'; + } } // |193-200 | 8 |Horizontal Visibility |horizontalVisibility |u| 0-126 (0.1NM); 127 = not available @@ -276,7 +346,12 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'horizontalVisibility', get: function get() { - return this._bitField.getInt(193, 8, true); + var val = this._bitField.getInt(193, 8, true); + if (val >= 127) { + return NaN; + } else { + return val; + } } // |201-212 | 12 |Water Level (incl. tide) |waterLevel |u| 0-4000 (add -10.0); 4001 = not available @@ -284,7 +359,12 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'waterLevel', get: function get() { - return this._bitField.getInt(201, 12, true); + var val = this._bitField.getInt(201, 12, true); + if (val >= 4001) { + return NaN; + } else { + return val; + } } // |213-214 | 2 |Water Level Trend |waterLevelTrend |u| 0=steady, 1=decreasing, 2=increasing, 3=not available @@ -292,7 +372,17 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'waterLevelTrend', get: function get() { - return this._bitField.getInt(213, 2, true); + var val = this._bitField.getInt(213, 2, true); + switch (val) { + case 0: + return 'STEADY'; + case 1: + return 'DECREASING'; + case 2: + return 'INCREASING'; + default: + return 'NA'; + } } // |215-222 | 8 |Surface Current Speed |curr1Speed |u| 0-251 (0.1kt); 251+ = not available @@ -300,7 +390,12 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'curr1Speed', get: function get() { - return this._bitField.getInt(215, 8, true); + var val = this._bitField.getInt(215, 8, true); + if (val >= 251) { + return NaN; + } else { + return val / 10.0; + } } // |223-231 | 9 |Surface Current Direction|curr1Direction |u| 0-359 deg; 360 = not available @@ -308,7 +403,12 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'curr1Direction', get: function get() { - return this._bitField.getInt(223, 9, true); + var val = this._bitField.getInt(223, 9, true); + if (val >= 360) { + return NaN; + } else { + return val; + } } // |232-239 | 8 |Current Speed #2 |curr2Speed |u| Same encoding as curr1Speed @@ -316,7 +416,12 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'curr2Speed', get: function get() { - return this._bitField.getInt(232, 8, true); + var val = this._bitField.getInt(232, 8, true); + if (val >= 251) { + return NaN; + } else { + return val / 10.0; + } } // |240-248 | 9 |Current Direction #2 |curr2Direction |u| Same encoding as curr1Direction @@ -324,7 +429,12 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'curr2Direction', get: function get() { - return this._bitField.getInt(240, 9, true); + var val = this._bitField.getInt(240, 9, true); + if (val >= 360) { + return NaN; + } else { + return val; + } } // |249-253 | 5 |Current Measuring Lv #2 |curr2Level |u| 0-30 m, 31 = not available @@ -332,7 +442,12 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'curr2Level', get: function get() { - return this._bitField.getInt(249, 5, true); + var val = this._bitField.getInt(249, 5, true); + if (val >= 31) { + return NaN; + } else { + return val; + } } // |254-261 | 8 |Current Speed #3 |curr3Speed |u| Same encoding as curr1Speed @@ -340,7 +455,12 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'curr3Speed', get: function get() { - return this._bitField.getInt(254, 8, true); + var val = this._bitField.getInt(254, 8, true); + if (val >= 251) { + return NaN; + } else { + return val / 10.0; + } } // |262-270 | 9 |Current Direction #3 |curr3Direction |u| Same encoding as curr1Direction @@ -348,7 +468,12 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'curr3Direction', get: function get() { - return this._bitField.getInt(262, 9, true); + var val = this._bitField.getInt(262, 9, true); + if (val >= 360) { + return NaN; + } else { + return val; + } } // |271-275 | 5 |Current Measuring Lv #3 |curr3Level |u| 0-30 m, 31 = not available @@ -356,7 +481,12 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'curr3Level', get: function get() { - return this._bitField.getInt(271, 5, true); + var val = this._bitField.getInt(271, 5, true); + if (val >= 31) { + return NaN; + } else { + return val; + } } // |276-283 | 8 |Significant Wave Height |sigWaveHeight |u| 0-251 (0.1m); 251+ = not available @@ -364,7 +494,12 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'sigWaveHeight', get: function get() { - return this._bitField.getInt(276, 8, true); + var val = this._bitField.getInt(276, 8, true); + if (val >= 251) { + return NaN; + } else { + return val; + } } // |284-289 | 6 |Wave Period |wavePeriod |u| 0-60 s; 61+ = not available @@ -372,7 +507,12 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'wavePeriod', get: function get() { - return this._bitField.getInt(284, 6, true); + var val = this._bitField.getInt(284, 6, true); + if (val >= 61) { + return NaN; + } else { + return val; + } } // |290-298 | 9 |Wave Direction |waveDirection |u| 0-359 deg; 360+ = not available @@ -380,7 +520,12 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'waveDirection', get: function get() { - return this._bitField.getInt(290, 9, true); + var val = this._bitField.getInt(290, 9, true); + if (val >= 360) { + return NaN; + } else { + return val; + } } // |299-306 | 8 |Swell Height |swellHeight |u| 0-251 (0.1m); 251+ = not available @@ -388,7 +533,12 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'swellHeight', get: function get() { - return this._bitField.getInt(299, 8, true); + var val = this._bitField.getInt(299, 8, true); + if (val >= 251) { + return NaN; + } else { + return val; + } } // |307-312 | 6 |Swell Period |swellPeriod |u| 0-60 s; 61+ = not available @@ -396,7 +546,12 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'swellPeriod', get: function get() { - return this._bitField.getInt(307, 6, true); + var val = this._bitField.getInt(307, 6, true); + if (val >= 61) { + return NaN; + } else { + return val; + } } // |313-321 | 9 |Swell Direction |swellDirection |u| 0-359 deg; 360+ = not available @@ -404,7 +559,12 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'swellDirection', get: function get() { - return this._bitField.getInt(313, 9, true); + var val = this._bitField.getInt(313, 9, true); + if (val >= 360) { + return NaN; + } else { + return val; + } } // |322-325 | 4 |Sea State |seaState |u| Beaufort code @@ -420,7 +580,12 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'waterTemperature', get: function get() { - return this._bitField.getSignedInt(326, 10, true); + var val = this._bitField.getInt(326, 10, false); + if (val >= 501) { + return NaN; + } else { + return val; + } } // |336-338 | 3 |Precipitation Type |precipitationType |u| 0=reserved, 1=rain, …, 5=snow @@ -428,7 +593,23 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'precipitationType', get: function get() { - return this._bitField.getInt(336, 3, true); + var val = this._bitField.getInt(336, 3, true); + switch (val) { + case 0: + return 'RESERVED'; + case 1: + return 'RAIN'; + case 2: + return 'THUNDERSTORM'; + case 3: + return 'FREEZING'; + case 4: + return 'FREEZING'; + case 5: + return 'SNOW'; + default: + return 'NA'; + } } // |339-347 | 9 |Salinity |salinity |u| 0-500 (0.1 ppt), 510 = not available @@ -436,7 +617,12 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'salinity', get: function get() { - return this._bitField.getInt(339, 9, true); + var val = this._bitField.getInt(339, 9, true); + if (val >= 510) { + return NaN; + } else { + return val; + } } // |348-349 | 2 |Ice |ice |u| 0=no, 1=yes, 2=reserved, 3=not available @@ -444,7 +630,12 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'ice', get: function get() { - return this._bitField.getInt(348, 2, true); + var val = this._bitField.getInt(348, 2, true); + if (val >= 3) { + return NaN; + } else { + return val; + } } }]); diff --git a/lib/Ais27Msg.js b/lib/Ais27Msg.js index 60b85ae..cc7acbd 100644 --- a/lib/Ais27Msg.js +++ b/lib/Ais27Msg.js @@ -131,7 +131,7 @@ var Ais27Msg = function (_AisMessage) { }, { key: 'posAccuracy', get: function get() { - return this._bitField.getInt(38, 1, true); + return this._bitField.getInt(38, 1, true) === 1; } }]); diff --git a/lib/AisMessage.js b/lib/AisMessage.js index 2d63f66..a0fceb7 100644 --- a/lib/AisMessage.js +++ b/lib/AisMessage.js @@ -286,7 +286,6 @@ var MID_TO_COUNTRY = { "371": ["Panama (Republic of)", "PA"], "372": ["Panama (Republic of)", "PA"], "373": ["Panama (Republic of)", "PA"], - "374": ["Panama (Republic of)", "PA"], "375": ["Saint Vincent and the Grenadines", "VC"], "376": ["Saint Vincent and the Grenadines", "VC"], "377": ["Saint Vincent and the Grenadines", "VC"], @@ -484,7 +483,8 @@ var AID_TO_NAV = { '28': 'Isolated danger', '29': 'Safe Water', '30': 'Special Mark', - '31': 'Light Vessel / LANBY / Rigs' }; + '31': 'Light Vessel / LANBY / Rigs' +}; var EPFD = { '0': 'Undefined', @@ -567,7 +567,38 @@ var UNITS = { 'load': 'number', 'speedQuality': 'boolean', 'courseQuality': 'boolean', - 'headingQuality': 'boolean' + 'headingQuality': 'boolean', + 'avgWindSpeed': 'kn', + 'avgGustSpeed': 'kn', + 'avgWindDirection': 'deg', + 'avgGustDirection': 'deg', + 'airTemperature': 'degC', + 'relativeHumidity': 'pct', + 'dewPoint': 'degC', + 'airPressure': 'hPa', + 'airPressureTendency': 'index', + 'horizontalVisibility': 'NM', + 'waterLevel': 'm', + 'waterLevelTrend': 'index', + 'curr1Speed': 'kn', + 'curr1Direction': 'deg', + 'curr2Speed': 'kn', + 'curr2Direction': 'deg', + 'curr2Level': 'm', + 'curr3Speed': 'kn', + 'curr3Direction': 'deg', + 'curr3Level': 'm', + 'sigWaveHeight': 'm', + 'wavePeriod': 's', + 'waveDirection': 'deg', + 'swellHeight': 'm', + 'swellPeriod': 's', + 'swellDirection': 'deg', + 'seaState': 'index', + 'waterTemperature': 'degC', + 'precipitationType': 'index', + 'salinity': 'ppt', + 'ice': 'index' }; var suppValuesValid = false; diff --git a/src/Ais08Msg.js b/src/Ais08Msg.js index b897182..06e2fd3 100644 --- a/src/Ais08Msg.js +++ b/src/Ais08Msg.js @@ -2,7 +2,7 @@ /* * AisParser: A parser for NMEA0183 AIS messages. - * Copyright (C) 2017 Thomas Runte . + * Copyright (C) 2025 Davide Gessa . * * This program is free software: you can redistribute it and/or modify * it under the terms of the Apache License Version 2.0 as published by diff --git a/src/Ais08MsgDac1Fid31.js b/src/Ais08MsgDac1Fid31.js index d668423..17929d6 100644 --- a/src/Ais08MsgDac1Fid31.js +++ b/src/Ais08MsgDac1Fid31.js @@ -21,6 +21,10 @@ import AisBitField from './AisBitField'; import AisMessage from './AisMessage'; import type { SuppValues } from './AisMessage'; +export type ValueTrend = 'STEADY' | 'DECREASING' | 'INCREASING' | 'NA'; +export type PrecipitationType = 'RESERVED' | 'RAIN' | 'THUNDERSTORM' | 'FREEZING' | 'SNOW' | 'NA'; + + const MOD_NAME = 'Ais8MsgDac1Fid31'; const SUPPORTED_FIELDS = [ @@ -154,173 +158,335 @@ export default class Ais8MsgDac1Fid31 extends AisMessage { // |40-49 | 10 |Designated area code |dac |u| - get dac() : number { - return this._bitField.getInt(40,10,true); + get dac(): number { + return this._bitField.getInt(40, 10, true); } // |50-55 | 6 |Function identifier |fid |u| - get fid() : number { - return this._bitField.getInt(50,6,true); + get fid(): number { + return this._bitField.getInt(50, 6, true); } + // |56-80 | 25 |Longitude |longitude |I4| Longitude in 1/1000 min, ±180 deg by 2's complement; 181 = not available - get longitude(): number { - return this._bitField.getSignedInt(56, 25, true); + _getRawLon(): number { + return this._bitField.getInt(56, 25, false) * 10; } // |81-104 | 24 |Latitude |latitude |I4| Latitude in 1/1000 min, ±90 deg by 2's complement; 91 = not available - get latitude(): number { - return this._bitField.getSignedInt(81, 24, true); + _getRawLat(): number { + return this._bitField.getInt(81, 24, false) * 10; } + // // |56-80 | 25 |Longitude |longitude |I4| Longitude in 1/1000 min, ±180 deg by 2's complement; 181 = not available + // get longitude(): number { + // return this._bitField.getInt(56, 25, false); + // } + + // // |81-104 | 24 |Latitude |latitude |I4| Latitude in 1/1000 min, ±90 deg by 2's complement; 91 = not available + // get latitude(): number { + // return this._bitField.getInt(81, 24, false); + // } + // |105 | 1 |Position Accuracy |posAccuracy |u| 1 = < 10m, 0 = > 10m - get posAccuracy(): number { - return this._bitField.getInt(105, 1, true); + get posAccuracy(): boolean { + return this._bitField.getInt(105, 1, true) === 1; } // |106-110 | 5 |Day (UTC) |utcDay |u| 1-31; 0 = not available get utcDay(): number { - return this._bitField.getInt(106, 5, true); + return this._bitField.getInt(106, 5, true) || NaN; } // |111-115 | 5 |Hour (UTC) |utcHour |u| 0-23; 24 = not available get utcHour(): number { - return this._bitField.getInt(111, 5, true); + let val = this._bitField.getInt(111, 5, true); + if (val >= 24) { + return NaN; + } else { + return val; + } } // |116-121 | 6 |Minute (UTC) |utcMinute |u| 0-59; 60 = not available get utcMinute(): number { - return this._bitField.getInt(116, 6, true); + let val = this._bitField.getInt(116, 6, true); + if (val >= 60) { + return NaN; + } else { + return val; + } } // |122-128 | 7 |Average Wind Speed |avgWindSpeed |u| 0-125 knots; 127 = not available get avgWindSpeed(): number { - return this._bitField.getInt(122, 7, true); + let val = this._bitField.getInt(122, 7, true); + if (val >= 127) { + return NaN; + } else { + return val; + } } // |129-135 | 7 |Wind Gust |avgGustSpeed |u| 0-125 knots; 127 = not available get avgGustSpeed(): number { - return this._bitField.getInt(129, 7, true); + let val = this._bitField.getInt(129, 7, true); + if (val >= 127) { + return NaN; + } else { + return val; + } } // |136-144 | 9 |Wind Direction |avgWindDirection |u| 0-359 deg; 360 = not available get avgWindDirection(): number { - return this._bitField.getInt(136, 9, true); + let val = this._bitField.getInt(136, 9, true); + if (val >= 360) { + return NaN; + } else { + return val; + } } // |145-153 | 9 |Wind Gust Direction |avgGustDirection |u| 0-359 deg; 360 = not available get avgGustDirection(): number { - return this._bitField.getInt(145, 9, true); + let val = this._bitField.getInt(145, 9, true); + if (val >= 360) { + return NaN; + } else { + return val; + } } // |154-164 | 11 |Air Temperature |airTemperature |I4| In 0.1 °C steps, -60.0 to +60.0°C; -1024 = not available get airTemperature(): number { - return this._bitField.getSignedInt(154, 11, true); + let val = this._bitField.getInt(154, 11, false); + if (val == -1024) { + return NaN; + } else { + return val / 10.0; + } } // |165-171 | 7 |Relative Humidity |relativeHumidity |u| 0-100%; 101 = not available get relativeHumidity(): number { - return this._bitField.getInt(165, 7, true); + let val = this._bitField.getInt(165, 7, true); + if (val >= 101) { + return NaN; + } else { + return val; + } } // |172-181 | 10 |Dew Point |dewPoint |I4| -20.0 to +50.0 °C; 501 = not available get dewPoint(): number { - return this._bitField.getSignedInt(172, 10, true); + let val = this._bitField.getInt(172, 10, false); + if (val >= 501) { + return NaN; + } else { + return val / 10.0; + } } // |182-190 | 9 |Air Pressure |airPressure |u| 800-1200 hPa; 511 = not available get airPressure(): number { - return this._bitField.getInt(182, 9, true); + let val = this._bitField.getInt(182, 9, true); + if (val >= 511) { + return NaN; + } else { + return val; + } } // |191-192 | 2 |Air Pressure Tendency |airPressureTendency |u| 0=steady, 1=decreasing, 2=increasing, 3=not available - get airPressureTendency(): number { - return this._bitField.getInt(191, 2, true); + get airPressureTendency(): ValueTrend { + let val = this._bitField.getInt(191, 2, true); + switch (val) { + case 0: + return 'STEADY'; + case 1: + return 'DECREASING'; + case 2: + return 'INCREASING'; + default: + return 'NA'; + } } // |193-200 | 8 |Horizontal Visibility |horizontalVisibility |u| 0-126 (0.1NM); 127 = not available get horizontalVisibility(): number { - return this._bitField.getInt(193, 8, true); + let val = this._bitField.getInt(193, 8, true); + if (val >= 127) { + return NaN; + } else { + return val; + } } // |201-212 | 12 |Water Level (incl. tide) |waterLevel |u| 0-4000 (add -10.0); 4001 = not available get waterLevel(): number { - return this._bitField.getInt(201, 12, true); + let val = this._bitField.getInt(201, 12, true); + if (val >= 4001) { + return NaN; + } else { + return val; + } } + // |213-214 | 2 |Water Level Trend |waterLevelTrend |u| 0=steady, 1=decreasing, 2=increasing, 3=not available - get waterLevelTrend(): number { - return this._bitField.getInt(213, 2, true); + get waterLevelTrend(): ValueTrend { + let val = this._bitField.getInt(213, 2, true); + switch (val) { + case 0: + return 'STEADY'; + case 1: + return 'DECREASING'; + case 2: + return 'INCREASING'; + default: + return 'NA'; + } } // |215-222 | 8 |Surface Current Speed |curr1Speed |u| 0-251 (0.1kt); 251+ = not available get curr1Speed(): number { - return this._bitField.getInt(215, 8, true); + let val = this._bitField.getInt(215, 8, true); + if (val >= 251) { + return NaN; + } else { + return val / 10.0; + } } // |223-231 | 9 |Surface Current Direction|curr1Direction |u| 0-359 deg; 360 = not available get curr1Direction(): number { - return this._bitField.getInt(223, 9, true); + let val = this._bitField.getInt(223, 9, true); + if (val >= 360) { + return NaN; + } else { + return val; + } } // |232-239 | 8 |Current Speed #2 |curr2Speed |u| Same encoding as curr1Speed get curr2Speed(): number { - return this._bitField.getInt(232, 8, true); + let val = this._bitField.getInt(232, 8, true); + if (val >= 251) { + return NaN; + } else { + return val / 10.0; + } } // |240-248 | 9 |Current Direction #2 |curr2Direction |u| Same encoding as curr1Direction get curr2Direction(): number { - return this._bitField.getInt(240, 9, true); + let val = this._bitField.getInt(240, 9, true); + if (val >= 360) { + return NaN; + } else { + return val; + } } // |249-253 | 5 |Current Measuring Lv #2 |curr2Level |u| 0-30 m, 31 = not available get curr2Level(): number { - return this._bitField.getInt(249, 5, true); + let val = this._bitField.getInt(249, 5, true); + if (val >= 31) { + return NaN; + } else { + return val; + } } // |254-261 | 8 |Current Speed #3 |curr3Speed |u| Same encoding as curr1Speed get curr3Speed(): number { - return this._bitField.getInt(254, 8, true); + let val = this._bitField.getInt(254, 8, true); + if (val >= 251) { + return NaN; + } else { + return val / 10.0; + } } // |262-270 | 9 |Current Direction #3 |curr3Direction |u| Same encoding as curr1Direction get curr3Direction(): number { - return this._bitField.getInt(262, 9, true); + let val = this._bitField.getInt(262, 9, true); + if (val >= 360) { + return NaN; + } else { + return val; + } } // |271-275 | 5 |Current Measuring Lv #3 |curr3Level |u| 0-30 m, 31 = not available get curr3Level(): number { - return this._bitField.getInt(271, 5, true); + let val = this._bitField.getInt(271, 5, true); + if (val >= 31) { + return NaN; + } else { + return val; + } } // |276-283 | 8 |Significant Wave Height |sigWaveHeight |u| 0-251 (0.1m); 251+ = not available get sigWaveHeight(): number { - return this._bitField.getInt(276, 8, true); + let val = this._bitField.getInt(276, 8, true); + if (val >= 251) { + return NaN; + } else { + return val; + } } // |284-289 | 6 |Wave Period |wavePeriod |u| 0-60 s; 61+ = not available get wavePeriod(): number { - return this._bitField.getInt(284, 6, true); + let val = this._bitField.getInt(284, 6, true); + if (val >= 61) { + return NaN; + } else { + return val; + } } // |290-298 | 9 |Wave Direction |waveDirection |u| 0-359 deg; 360+ = not available get waveDirection(): number { - return this._bitField.getInt(290, 9, true); + let val = this._bitField.getInt(290, 9, true); + if (val >= 360) { + return NaN; + } else { + return val; + } } // |299-306 | 8 |Swell Height |swellHeight |u| 0-251 (0.1m); 251+ = not available get swellHeight(): number { - return this._bitField.getInt(299, 8, true); + let val = this._bitField.getInt(299, 8, true); + if (val >= 251) { + return NaN; + } else { + return val; + } } // |307-312 | 6 |Swell Period |swellPeriod |u| 0-60 s; 61+ = not available get swellPeriod(): number { - return this._bitField.getInt(307, 6, true); + let val = this._bitField.getInt(307, 6, true); + if (val >= 61) { + return NaN; + } else { + return val; + } } // |313-321 | 9 |Swell Direction |swellDirection |u| 0-359 deg; 360+ = not available get swellDirection(): number { - return this._bitField.getInt(313, 9, true); + let val = this._bitField.getInt(313, 9, true); + if (val >= 360) { + return NaN; + } else { + return val; + } } // |322-325 | 4 |Sea State |seaState |u| Beaufort code @@ -330,21 +496,52 @@ export default class Ais8MsgDac1Fid31 extends AisMessage { // |326-335 | 10 |Water Temperature |waterTemperature |I4| -10.0 to +50.0°C (0.1°C); 501 = not available get waterTemperature(): number { - return this._bitField.getSignedInt(326, 10, true); + let val = this._bitField.getInt(326, 10, false); + if (val >= 501) { + return NaN; + } else { + return val; + } } // |336-338 | 3 |Precipitation Type |precipitationType |u| 0=reserved, 1=rain, …, 5=snow - get precipitationType(): number { - return this._bitField.getInt(336, 3, true); + get precipitationType(): PrecipitationType { + let val = this._bitField.getInt(336, 3, true); + switch (val) { + case 0: + return 'RESERVED'; + case 1: + return 'RAIN'; + case 2: + return 'THUNDERSTORM'; + case 3: + return 'FREEZING'; + case 4: + return 'FREEZING'; + case 5: + return 'SNOW'; + default: + return 'NA'; + } } // |339-347 | 9 |Salinity |salinity |u| 0-500 (0.1 ppt), 510 = not available get salinity(): number { - return this._bitField.getInt(339, 9, true); + let val = this._bitField.getInt(339, 9, true); + if (val >= 510) { + return NaN; + } else { + return val; + } } // |348-349 | 2 |Ice |ice |u| 0=no, 1=yes, 2=reserved, 3=not available get ice(): number { - return this._bitField.getInt(348, 2, true); + let val = this._bitField.getInt(348, 2, true); + if (val >= 3) { + return NaN; + } else { + return val; + } } } diff --git a/src/Ais27Msg.js b/src/Ais27Msg.js index f7605b7..e57340d 100644 --- a/src/Ais27Msg.js +++ b/src/Ais27Msg.js @@ -107,7 +107,7 @@ export default class Ais27Msg extends AisMessage { } get posAccuracy(): boolean { - return this._bitField.getInt(38, 1, true); + return this._bitField.getInt(38, 1, true) === 1; } _getRawLat(): number { diff --git a/src/AisMessage.js b/src/AisMessage.js index e99956a..d1a2a82 100644 --- a/src/AisMessage.js +++ b/src/AisMessage.js @@ -22,14 +22,14 @@ import AisBitField from './AisBitField'; export type UtcTsStatus = 'VALID' | 'INVALID' | 'NA' | 'MANUAL' | 'ESTIMATED' | 'INOPERATIVE'; export type RotStatus = 'NONE' | 'RIGHT' | 'LEFT' | 'NA'; export type SogStatus = 'HIGH' | 'VALID' | 'INVALID' | 'NA'; -export type SuppValues = { [key : string] : string }; +export type SuppValues = { [key: string]: string }; export type Validity = 'VALID' | 'INCOMPLETE' | 'INVALID' | 'UNSUPPORTED'; export type DimStatus = 'VALID' | 'NA' | 'HUGE'; export type ROT = { - type : 'RIGHT' | 'LEFT' | 'NONE' | 'INVALID'; - speed : number; + type: 'RIGHT' | 'LEFT' | 'NONE' | 'INVALID'; + speed: number; } const MOD_NAME = 'AisMessage'; @@ -39,577 +39,609 @@ const INVALID_LAT = 0x3412140; const SUPPORTED_FIELDS = [ 'valid', 'errMsg', - 'aisType' ]; + 'aisType']; const NAV_STATUS = { - '0' : 'Under way using engine', - '1' : 'At anchor', - '2' : 'Not under command', - '3' : 'Restricted manoeuverability', - '4' : 'Constrained by her draught', - '5' : 'Moored', - '6' : 'Aground', - '7' : 'Engaged in Fishing', - '8' : 'Under way sailing', - '9' : 'Reserved for future amendment of Navigational Status for HSC', - '10' : 'Reserved for future amendment of Navigational Status for WIG', - '11' : 'Reserved for future use', - '12' : 'Reserved for future use', - '13' : 'Reserved for future use', - '14' : 'Reserved for future use', - '15' : 'Not defined (default)', + '0': 'Under way using engine', + '1': 'At anchor', + '2': 'Not under command', + '3': 'Restricted manoeuverability', + '4': 'Constrained by her draught', + '5': 'Moored', + '6': 'Aground', + '7': 'Engaged in Fishing', + '8': 'Under way sailing', + '9': 'Reserved for future amendment of Navigational Status for HSC', + '10': 'Reserved for future amendment of Navigational Status for WIG', + '11': 'Reserved for future use', + '12': 'Reserved for future use', + '13': 'Reserved for future use', + '14': 'Reserved for future use', + '15': 'Not defined (default)', } const SHIP_TYPE = { - '0' : 'Not available', - '1' : 'Reserved for future use', - '2' : 'Reserved for future use', - '3' : 'Reserved for future use', - '4' : 'Reserved for future use', - '5' : 'Reserved for future use', - '6' : 'Reserved for future use', - '7' : 'Reserved for future use', - '8' : 'Reserved for future use', - '9' : 'Reserved for future use', - '10' : 'Reserved for future use', - '11' : 'Reserved for future use', - '12' : 'Reserved for future use', - '13' : 'Reserved for future use', - '14' : 'Reserved for future use', - '15' : 'Reserved for future use', - '16' : 'Reserved for future use', - '17' : 'Reserved for future use', - '18' : 'Reserved for future use', - '19' : 'Reserved for future use', - '20' : '|Wing in ground (WIG), all ships of this type', - '21' : 'Wing in ground (WIG), Hazardous category A', - '22' : 'Wing in ground (WIG), Hazardous category B', - '23' : 'Wing in ground (WIG), Hazardous category C', - '24' : 'Wing in ground (WIG), Hazardous category D', - '25' : 'Wing in ground (WIG), Reserved for future use', - '26' : 'Wing in ground (WIG), Reserved for future use', - '27' : 'Wing in ground (WIG), Reserved for future use', - '28' : 'Wing in ground (WIG), Reserved for future use', - '29' : 'Wing in ground (WIG), Reserved for future use', - '30' : 'Fishing', - '31' : 'Towing', - '32' : 'Towing: length exceeds 200m or breadth exceeds 25m', - '33' : 'Dredging or underwater ops', - '34' : 'Diving ops', - '35' : 'Military ops', - '36' : 'Sailing', - '37' : 'Pleasure Craft', - '38' : 'Reserved', - '39' : 'Reserved', - '40' : 'High speed craft (HSC), all ships of this type', - '41' : 'High speed craft (HSC), Hazardous category A', - '42' : 'High speed craft (HSC), Hazardous category B', - '43' : 'High speed craft (HSC), Hazardous category C', - '44' : 'High speed craft (HSC), Hazardous category D', - '45' : 'High speed craft (HSC), Reserved for future use', - '46' : 'High speed craft (HSC), Reserved for future use', - '47' : 'High speed craft (HSC), Reserved for future use', - '48' : 'High speed craft (HSC), Reserved for future use', - '49' : 'High speed craft (HSC), No additional information', - '50' : 'Pilot Vessel', - '51' : 'Search and Rescue vessel', - '52' : 'Tug', - '53' : 'Port Tender', - '54' : 'Anti-pollution equipment', - '55' : 'Law Enforcement', - '56' : 'Spare - Local Vessel', - '57' : 'Spare - Local Vessel', - '58' : 'Medical Transport', - '59' : 'Noncombatant ship according to RR Resolution No. 18', - '60' : 'Passenger, all ships of this type', - '61' : 'Passenger, Hazardous category A', - '62' : 'Passenger, Hazardous category B', - '63' : 'Passenger, Hazardous category C', - '64' : 'Passenger, Hazardous category D', - '65' : 'Passenger, Reserved for future use', - '66' : 'Passenger, Reserved for future use', - '67' : 'Passenger, Reserved for future use', - '68' : 'Passenger, Reserved for future use', - '69' : 'Passenger, No additional information', - '70' : 'Cargo, all ships of this type', - '71' : 'Cargo, Hazardous category A', - '72' : 'Cargo, Hazardous category B', - '73' : 'Cargo, Hazardous category C', - '74' : 'Cargo, Hazardous category D', - '75' : 'Cargo, Reserved for future use', - '76' : 'Cargo, Reserved for future use', - '77' : 'Cargo, Reserved for future use', - '78' : 'Cargo, Reserved for future use', - '79' : 'Cargo, No additional information', - '80' : 'Tanker, all ships of this type', - '81' : 'Tanker, Hazardous category A', - '82' : 'Tanker, Hazardous category B', - '83' : 'Tanker, Hazardous category C', - '84' : 'Tanker, Hazardous category D', - '85' : 'Tanker, Reserved for future use', - '86' : 'Tanker, Reserved for future use', - '87' : 'Tanker, Reserved for future use', - '88' : 'Tanker, Reserved for future use', - '89' : 'Tanker, No additional information', - '90' : 'Other Type, all ships of this type', - '91' : 'Other Type, Hazardous category A', - '92' : 'Other Type, Hazardous category B', - '93' : 'Other Type, Hazardous category C', - '94' : 'Other Type, Hazardous category D', - '95' : 'Other Type, Reserved for future use', - '96' : 'Other Type, Reserved for future use', - '97' : 'Other Type, Reserved for future use', - '98' : 'Other Type, Reserved for future use', - '99' : 'Other Type, no additional information', + '0': 'Not available', + '1': 'Reserved for future use', + '2': 'Reserved for future use', + '3': 'Reserved for future use', + '4': 'Reserved for future use', + '5': 'Reserved for future use', + '6': 'Reserved for future use', + '7': 'Reserved for future use', + '8': 'Reserved for future use', + '9': 'Reserved for future use', + '10': 'Reserved for future use', + '11': 'Reserved for future use', + '12': 'Reserved for future use', + '13': 'Reserved for future use', + '14': 'Reserved for future use', + '15': 'Reserved for future use', + '16': 'Reserved for future use', + '17': 'Reserved for future use', + '18': 'Reserved for future use', + '19': 'Reserved for future use', + '20': '|Wing in ground (WIG), all ships of this type', + '21': 'Wing in ground (WIG), Hazardous category A', + '22': 'Wing in ground (WIG), Hazardous category B', + '23': 'Wing in ground (WIG), Hazardous category C', + '24': 'Wing in ground (WIG), Hazardous category D', + '25': 'Wing in ground (WIG), Reserved for future use', + '26': 'Wing in ground (WIG), Reserved for future use', + '27': 'Wing in ground (WIG), Reserved for future use', + '28': 'Wing in ground (WIG), Reserved for future use', + '29': 'Wing in ground (WIG), Reserved for future use', + '30': 'Fishing', + '31': 'Towing', + '32': 'Towing: length exceeds 200m or breadth exceeds 25m', + '33': 'Dredging or underwater ops', + '34': 'Diving ops', + '35': 'Military ops', + '36': 'Sailing', + '37': 'Pleasure Craft', + '38': 'Reserved', + '39': 'Reserved', + '40': 'High speed craft (HSC), all ships of this type', + '41': 'High speed craft (HSC), Hazardous category A', + '42': 'High speed craft (HSC), Hazardous category B', + '43': 'High speed craft (HSC), Hazardous category C', + '44': 'High speed craft (HSC), Hazardous category D', + '45': 'High speed craft (HSC), Reserved for future use', + '46': 'High speed craft (HSC), Reserved for future use', + '47': 'High speed craft (HSC), Reserved for future use', + '48': 'High speed craft (HSC), Reserved for future use', + '49': 'High speed craft (HSC), No additional information', + '50': 'Pilot Vessel', + '51': 'Search and Rescue vessel', + '52': 'Tug', + '53': 'Port Tender', + '54': 'Anti-pollution equipment', + '55': 'Law Enforcement', + '56': 'Spare - Local Vessel', + '57': 'Spare - Local Vessel', + '58': 'Medical Transport', + '59': 'Noncombatant ship according to RR Resolution No. 18', + '60': 'Passenger, all ships of this type', + '61': 'Passenger, Hazardous category A', + '62': 'Passenger, Hazardous category B', + '63': 'Passenger, Hazardous category C', + '64': 'Passenger, Hazardous category D', + '65': 'Passenger, Reserved for future use', + '66': 'Passenger, Reserved for future use', + '67': 'Passenger, Reserved for future use', + '68': 'Passenger, Reserved for future use', + '69': 'Passenger, No additional information', + '70': 'Cargo, all ships of this type', + '71': 'Cargo, Hazardous category A', + '72': 'Cargo, Hazardous category B', + '73': 'Cargo, Hazardous category C', + '74': 'Cargo, Hazardous category D', + '75': 'Cargo, Reserved for future use', + '76': 'Cargo, Reserved for future use', + '77': 'Cargo, Reserved for future use', + '78': 'Cargo, Reserved for future use', + '79': 'Cargo, No additional information', + '80': 'Tanker, all ships of this type', + '81': 'Tanker, Hazardous category A', + '82': 'Tanker, Hazardous category B', + '83': 'Tanker, Hazardous category C', + '84': 'Tanker, Hazardous category D', + '85': 'Tanker, Reserved for future use', + '86': 'Tanker, Reserved for future use', + '87': 'Tanker, Reserved for future use', + '88': 'Tanker, Reserved for future use', + '89': 'Tanker, No additional information', + '90': 'Other Type, all ships of this type', + '91': 'Other Type, Hazardous category A', + '92': 'Other Type, Hazardous category B', + '93': 'Other Type, Hazardous category C', + '94': 'Other Type, Hazardous category D', + '95': 'Other Type, Reserved for future use', + '96': 'Other Type, Reserved for future use', + '97': 'Other Type, Reserved for future use', + '98': 'Other Type, Reserved for future use', + '99': 'Other Type, no additional information', } const MID_TO_COUNTRY = { - "201" : ["Albania (Republic of)","AL"], - "202" : ["Andorra (Principality of)","AD"], - "203" : ["Austria","AT"], - "204" : ["Azores - Portugal","PT"], - "205" : ["Belgium","BE"], - "206" : ["Belarus (Republic of)","BY"], - "207" : ["Bulgaria (Republic of)","BG"], - "208" : ["Vatican City State","VA"], - "209" : ["Cyprus (Republic of)","CY"], - "210" : ["Cyprus (Republic of)","CY"], - "211" : ["Germany (Federal Republic of)","DE"], - "212" : ["Cyprus (Republic of)","CY"], - "213" : ["Georgia","GE"], - "214" : ["Moldova (Republic of)","MD"], - "215" : ["Malta","MT"], - "216" : ["Armenia (Republic of)","AM"], - "218" : ["Germany (Federal Republic of)","DE"], - "219" : ["Denmark","DK"], - "220" : ["Denmark","DK"], - "224" : ["Spain","ES"], - "225" : ["Spain","ES"], - "226" : ["France","FR"], - "227" : ["France","FR"], - "228" : ["France","FR"], - "229" : ["Malta","MT"], - "230" : ["Finland","FI"], - "231" : ["Faroe Islands - Denmark","FO"], - "232" : ["United Kingdom of Great Britain and Northern Ireland","GB"], - "233" : ["United Kingdom of Great Britain and Northern Ireland","GB"], - "234" : ["United Kingdom of Great Britain and Northern Ireland","GB"], - "235" : ["United Kingdom of Great Britain and Northern Ireland","GB"], - "236" : ["Gibraltar - United Kingdom of Great Britain and Northern Ireland","GI"], - "237" : ["Greece","GR"], - "238" : ["Croatia (Republic of)","HR"], - "239" : ["Greece","GR"], - "240" : ["Greece","GR"], - "241" : ["Greece","GR"], - "242" : ["Morocco (Kingdom of)","MA"], - "243" : ["Hungary","HU"], - "244" : ["Netherlands (Kingdom of the)","599"], - "245" : ["Netherlands (Kingdom of the)","599"], - "246" : ["Netherlands (Kingdom of the)","599"], - "247" : ["Italy","IT"], - "248" : ["Malta","MT"], - "249" : ["Malta","MT"], - "250" : ["Ireland","IE"], - "251" : ["Iceland","IS"], - "252" : ["Liechtenstein (Principality of)","LI"], - "253" : ["Luxembourg","LU"], - "254" : ["Monaco (Principality of)","MC"], - "255" : ["Madeira - Portugal","PT"], - "256" : ["Malta","MT"], - "257" : ["Norway","NO"], - "258" : ["Norway","NO"], - "259" : ["Norway","NO"], - "261" : ["Poland (Republic of)","PL"], - "262" : ["Montenegro","ME"], - "263" : ["Portugal","PT"], - "264" : ["Romania","RO"], - "265" : ["Sweden","SE"], - "266" : ["Sweden","SE"], - "267" : ["Slovak Republic","SK"], - "268" : ["San Marino (Republic of)","SM"], - "269" : ["Switzerland (Confederation of)","CH"], - "270" : ["Czech Republic","CZ"], - "271" : ["Turkey","TR"], - "272" : ["Ukraine","UA"], - "273" : ["Russian Federation","RU"], - "274" : ["The Former Yugoslav Republic of Macedonia","MK"], - "275" : ["Latvia (Republic of)","LV"], - "276" : ["Estonia (Republic of)","EE"], - "277" : ["Lithuania (Republic of)","LT"], - "278" : ["Slovenia (Republic of)","SI"], - "279" : ["Serbia (Republic of)","RS"], - "301" : ["Anguilla - United Kingdom of Great Britain and Northern Ireland","AI"], - "303" : ["Alaska (State of) - United States of America","US"], - "304" : ["Antigua and Barbuda","AG"], - "305" : ["Antigua and Barbuda","AG"], - "306" : ["Curacao, Sint Maarten, Bonaire, Sint Eustatcius and Saba - Netherlands (Kingdom of the)","NL"], - "307" : ["Aruba - Netherlands (Kingdom of the)","AW"], - "308" : ["Bahamas (Commonwealth of the)","BS"], - "309" : ["Bahamas (Commonwealth of the)","BS"], - "310" : ["Bermuda - United Kingdom of Great Britain and Northern Ireland","BM"], - "311" : ["Bahamas (Commonwealth of the)","BS"], - "312" : ["Belize","BZ"], - "314" : ["Barbados","BB"], - "316" : ["Canada","CA"], - "319" : ["Cayman Islands - United Kingdom of Great Britain and Northern Ireland","KY"], - "321" : ["Costa Rica","CR"], - "323" : ["Cuba","CU"], - "325" : ["Dominica (Commonwealth of)","DM"], - "327" : ["Dominican Republic","DO"], - "329" : ["Guadeloupe (French Department of) - France","FR"], - "330" : ["Grenada","GD"], - "331" : ["Greenland - Denmark","GL"], - "332" : ["Guatemala (Republic of)","GT"], - "334" : ["Honduras (Republic of)","HN"], - "336" : ["Haiti (Republic of)","HT"], - "338" : ["United States of America","US"], - "339" : ["Jamaica","JM"], - "341" : ["Saint Kitts and Nevis (Federation of)","KN"], - "343" : ["Saint Lucia","LC"], - "345" : ["Mexico","MX"], - "347" : ["Martinique (French Department of) - France","FR"], - "348" : ["Montserrat - United Kingdom of Great Britain and Northern Ireland","MS"], - "350" : ["Nicaragua","NI"], - "351" : ["Panama (Republic of)","PA"], - "352" : ["Panama (Republic of)","PA"], - "353" : ["Panama (Republic of)","PA"], - "354" : ["Panama (Republic of)","PA"], - "355" : ["Puerto Rico - United States of America","PR"], - "356" : ["Puerto Rico - United States of America","PR"], - "357" : ["Puerto Rico - United States of America","PR"], - "358" : ["Puerto Rico - United States of America","PR"], - "359" : ["El Salvador (Republic of)","SV"], - "361" : ["Saint Pierre and Miquelon (Territorial Collectivity of) - France","PM"], - "362" : ["Trinidad and Tobago","TT"], - "364" : ["Turks and Caicos Islands - United Kingdom of Great Britain and Northern Ireland","TC"], - "366" : ["United States of America","US"], - "367" : ["United States of America","US"], - "368" : ["United States of America","US"], - "369" : ["United States of America","US"], - "370" : ["Panama (Republic of)","PA"], - "371" : ["Panama (Republic of)","PA"], - "372" : ["Panama (Republic of)","PA"], - "373" : ["Panama (Republic of)","PA"], - "375" : ["Saint Vincent and the Grenadines","VC"], - "376" : ["Saint Vincent and the Grenadines","VC"], - "377" : ["Saint Vincent and the Grenadines","VC"], - "378" : ["British Virgin Islands - United Kingdom of Great Britain and Northern Ireland","VG"], - "379" : ["United States Virgin Islands - United States of America","VI"], - "401" : ["Afghanistan","AF"], - "403" : ["Saudi Arabia (Kingdom of)","SA"], - "405" : ["Bangladesh (People's Republic of)","BD"], - "408" : ["Bahrain (Kingdom of)","BH"], - "410" : ["Bhutan (Kingdom of)","BT"], - "412" : ["China (People's Republic of)","CN"], - "413" : ["China (People's Republic of)","CN"], - "414" : ["China (People's Republic of)","CN"], - "416" : ["Taiwan (Province of China) - China (People's Republic of)","TW"], - "417" : ["Sri Lanka (Democratic Socialist Republic of)","LK"], - "419" : ["India (Republic of)","Territory"], - "422" : ["Iran (Islamic Republic of)","IR"], - "423" : ["Azerbaijan (Republic of)","AZ"], - "425" : ["Iraq (Republic of)","IQ"], - "428" : ["Israel (State of)","IL"], - "431" : ["Japan","JP"], - "432" : ["Japan","JP"], - "434" : ["Turkmenistan","TM"], - "436" : ["Kazakhstan (Republic of)","KZ"], - "437" : ["Uzbekistan (Republic of)","UZ"], - "438" : ["Jordan (Hashemite Kingdom of)","JO"], - "440" : ["Korea (Republic of)","KR"], - "441" : ["Korea (Republic of)","KR"], - "443" : ["State of Palestine (In accordance with Resolution 99 Rev. Guadalajara, 2010)","PS"], - "445" : ["Democratic People's Republic of Korea","KP"], - "447" : ["Kuwait (State of)","KW"], - "450" : ["Lebanon","LB"], - "451" : ["Kyrgyz Republic","KG"], - "453" : ["Macao (Special Administrative Region of China) - China (People's Republic of)","MO"], - "455" : ["Maldives (Republic of)","MV"], - "457" : ["Mongolia","MN"], - "459" : ["Nepal (Federal Democratic Republic of)","NP"], - "461" : ["Oman (Sultanate of)","OM"], - "463" : ["Pakistan (Islamic Republic of)","PK"], - "466" : ["Qatar (State of)","QA"], - "468" : ["Syrian Arab Republic","SY"], - "470" : ["United Arab Emirates","AE"], - "472" : ["Tajikistan (Republic of)","TJ"], - "473" : ["Yemen (Republic of)","YE"], - "475" : ["Yemen (Republic of)","YE"], - "477" : ["Hong Kong (Special Administrative Region of China) - China (People's Republic of)","HK"], - "478" : ["Bosnia and Herzegovina","BA"], - "501" : ["Adelie Land - France","FR"], - "503" : ["Australia","AU"], - "506" : ["Myanmar (Union of)","MM"], - "508" : ["Brunei Darussalam","BN"], - "510" : ["Micronesia (Federated States of)","FM"], - "511" : ["Palau (Republic of)","PW"], - "512" : ["New Zealand","NZ"], - "514" : ["Cambodia (Kingdom of)","KH"], - "515" : ["Cambodia (Kingdom of)","KH"], - "516" : ["Christmas Island (Indian Ocean) - Australia","CX"], - "518" : ["Cook Islands - New Zealand","CK"], - "520" : ["Fiji (Republic of)","FJ"], - "523" : ["Cocos (Keeling) Islands - Australia","61"], - "525" : ["Indonesia (Republic of)","ID"], - "529" : ["Kiribati (Republic of)","KI"], - "531" : ["Lao People's Democratic Republic","LA"], - "533" : ["Malaysia","MY"], - "536" : ["Northern Mariana Islands (Commonwealth of the) - United States of America","MP"], - "538" : ["Marshall Islands (Republic of the)","MH"], - "540" : ["New Caledonia - France","NC"], - "542" : ["Niue - New Zealand","NU"], - "544" : ["Nauru (Republic of)","NR"], - "546" : ["French Polynesia - France","PF"], - "548" : ["Philippines (Republic of the)","PH"], - "553" : ["Papua New Guinea","PG"], - "555" : ["Pitcairn Island - United Kingdom of Great Britain and Northern Ireland","PN"], - "557" : ["Solomon Islands","SB"], - "559" : ["American Samoa - United States of America","AS"], - "561" : ["Samoa (Independent State of)","AS"], - "563" : ["Singapore (Republic of)","SG"], - "564" : ["Singapore (Republic of)","SG"], - "565" : ["Singapore (Republic of)","SG"], - "566" : ["Singapore (Republic of)","SG"], - "567" : ["Thailand","TH"], - "570" : ["Tonga (Kingdom of)","TO"], - "572" : ["Tuvalu","TV"], - "574" : ["Viet Nam (Socialist Republic of)","VN"], - "576" : ["Vanuatu (Republic of)","VU"], - "577" : ["Vanuatu (Republic of)","VU"], - "578" : ["Wallis and Futuna Islands - France","WF"], - "601" : ["South Africa (Republic of)","ZA"], - "603" : ["Angola (Republic of)","AO"], - "605" : ["Algeria (People's Democratic Republic of)","DZ"], - "607" : ["Saint Paul and Amsterdam Islands - France","FR"], - "608" : ["Ascension Island - United Kingdom of Great Britain and Northern Ireland","GB"], - "609" : ["Burundi (Republic of)","BI"], - "610" : ["Benin (Republic of)","BJ"], - "611" : ["Botswana (Republic of)","BW"], - "612" : ["Central African Republic","CF"], - "613" : ["Cameroon (Republic of)","CM"], - "615" : ["Congo (Republic of the)","CD"], - "616" : ["Comoros (Union of the)","KM"], - "617" : ["Cabo Verde (Republic of)","CV"], - "618" : ["Crozet Archipelago - France","FR"], - "619" : ["Côte d'Ivoire (Republic of)","CI"], - "620" : ["Comoros (Union of the)","KM"], - "621" : ["Djibouti (Republic of)","DJ"], - "622" : ["Egypt (Arab Republic of)","EG"], - "624" : ["Ethiopia (Federal Democratic Republic of)","ET"], - "625" : ["Eritrea","ER"], - "626" : ["Gabonese Republic","GA"], - "627" : ["Ghana","GH"], - "629" : ["Gambia (Republic of the)","GM"], - "630" : ["Guinea-Bissau (Republic of)","GQ"], - "631" : ["Equatorial Guinea (Republic of)","GQ"], - "632" : ["Guinea (Republic of)","GQ"], - "633" : ["Burkina Faso","BF"], - "634" : ["Kenya (Republic of)","KE"], - "635" : ["Kerguelen Islands - France","FR"], - "636" : ["Liberia (Republic of)","LR"], - "637" : ["Liberia (Republic of)","LR"], - "638" : ["South Sudan (Republic of)","SS"], - "642" : ["Libya","LY"], - "644" : ["Lesotho (Kingdom of)","LS"], - "645" : ["Mauritius (Republic of)","MU"], - "647" : ["Madagascar (Republic of)","MG"], - "649" : ["Mali (Republic of)","ML"], - "650" : ["Mozambique (Republic of)","MZ"], - "654" : ["Mauritania (Islamic Republic of)","MR"], - "655" : ["Malawi","MW"], - "656" : ["Niger (Republic of the)","NE"], - "657" : ["Nigeria (Federal Republic of)","NG"], - "659" : ["Namibia (Republic of)","NA"], - "660" : ["Reunion (French Department of) - France","RE"], - "661" : ["Rwanda (Republic of)","RW"], - "662" : ["Sudan (Republic of the)","SS"], - "663" : ["Senegal (Republic of)","SN"], - "664" : ["Seychelles (Republic of)","SC"], - "665" : ["Saint Helena - United Kingdom of Great Britain and Northern Ireland","SH"], - "666" : ["Somalia (Federal Republic of)","SO"], - "667" : ["Sierra Leone","SL"], - "668" : ["Sao Tome and Principe (Democratic Republic of)","ST"], - "669" : ["Swaziland (Kingdom of)","SZ"], - "670" : ["Chad (Republic of)","TD"], - "671" : ["Togolese Republic","TG"], - "672" : ["Tunisia","TN"], - "674" : ["Tanzania (United Republic of)","TZ"], - "675" : ["Uganda (Republic of)","UG"], - "676" : ["Democratic Republic of the Congo","CD"], - "677" : ["Tanzania (United Republic of)","TZ"], - "678" : ["Zambia (Republic of)","ZM"], - "679" : ["Zimbabwe (Republic of)","ZW"], - "701" : ["Argentine Republic","AR"], - "710" : ["Brazil (Federative Republic of)","BR"], - "720" : ["Bolivia (Plurinational State of)","BO"], - "725" : ["Chile","CL"], - "730" : ["Colombia (Republic of)","CO"], - "735" : ["Ecuador","EC"], - "740" : ["Falkland Islands (Malvinas) - United Kingdom of Great Britain and Northern Ireland","FK"], - "745" : ["Guiana (French Department of) - France","GY"], - "750" : ["Guyana","GY"], - "755" : ["Paraguay (Republic of)","PY"], - "760" : ["Peru","PE"], - "765" : ["Suriname (Republic of)","SR"], - "770" : ["Uruguay (Eastern Republic of)","UY"], - "775" : ["Venezuela (Bolivarian Republic of)","VE"] + "201": ["Albania (Republic of)", "AL"], + "202": ["Andorra (Principality of)", "AD"], + "203": ["Austria", "AT"], + "204": ["Azores - Portugal", "PT"], + "205": ["Belgium", "BE"], + "206": ["Belarus (Republic of)", "BY"], + "207": ["Bulgaria (Republic of)", "BG"], + "208": ["Vatican City State", "VA"], + "209": ["Cyprus (Republic of)", "CY"], + "210": ["Cyprus (Republic of)", "CY"], + "211": ["Germany (Federal Republic of)", "DE"], + "212": ["Cyprus (Republic of)", "CY"], + "213": ["Georgia", "GE"], + "214": ["Moldova (Republic of)", "MD"], + "215": ["Malta", "MT"], + "216": ["Armenia (Republic of)", "AM"], + "218": ["Germany (Federal Republic of)", "DE"], + "219": ["Denmark", "DK"], + "220": ["Denmark", "DK"], + "224": ["Spain", "ES"], + "225": ["Spain", "ES"], + "226": ["France", "FR"], + "227": ["France", "FR"], + "228": ["France", "FR"], + "229": ["Malta", "MT"], + "230": ["Finland", "FI"], + "231": ["Faroe Islands - Denmark", "FO"], + "232": ["United Kingdom of Great Britain and Northern Ireland", "GB"], + "233": ["United Kingdom of Great Britain and Northern Ireland", "GB"], + "234": ["United Kingdom of Great Britain and Northern Ireland", "GB"], + "235": ["United Kingdom of Great Britain and Northern Ireland", "GB"], + "236": ["Gibraltar - United Kingdom of Great Britain and Northern Ireland", "GI"], + "237": ["Greece", "GR"], + "238": ["Croatia (Republic of)", "HR"], + "239": ["Greece", "GR"], + "240": ["Greece", "GR"], + "241": ["Greece", "GR"], + "242": ["Morocco (Kingdom of)", "MA"], + "243": ["Hungary", "HU"], + "244": ["Netherlands (Kingdom of the)", "599"], + "245": ["Netherlands (Kingdom of the)", "599"], + "246": ["Netherlands (Kingdom of the)", "599"], + "247": ["Italy", "IT"], + "248": ["Malta", "MT"], + "249": ["Malta", "MT"], + "250": ["Ireland", "IE"], + "251": ["Iceland", "IS"], + "252": ["Liechtenstein (Principality of)", "LI"], + "253": ["Luxembourg", "LU"], + "254": ["Monaco (Principality of)", "MC"], + "255": ["Madeira - Portugal", "PT"], + "256": ["Malta", "MT"], + "257": ["Norway", "NO"], + "258": ["Norway", "NO"], + "259": ["Norway", "NO"], + "261": ["Poland (Republic of)", "PL"], + "262": ["Montenegro", "ME"], + "263": ["Portugal", "PT"], + "264": ["Romania", "RO"], + "265": ["Sweden", "SE"], + "266": ["Sweden", "SE"], + "267": ["Slovak Republic", "SK"], + "268": ["San Marino (Republic of)", "SM"], + "269": ["Switzerland (Confederation of)", "CH"], + "270": ["Czech Republic", "CZ"], + "271": ["Turkey", "TR"], + "272": ["Ukraine", "UA"], + "273": ["Russian Federation", "RU"], + "274": ["The Former Yugoslav Republic of Macedonia", "MK"], + "275": ["Latvia (Republic of)", "LV"], + "276": ["Estonia (Republic of)", "EE"], + "277": ["Lithuania (Republic of)", "LT"], + "278": ["Slovenia (Republic of)", "SI"], + "279": ["Serbia (Republic of)", "RS"], + "301": ["Anguilla - United Kingdom of Great Britain and Northern Ireland", "AI"], + "303": ["Alaska (State of) - United States of America", "US"], + "304": ["Antigua and Barbuda", "AG"], + "305": ["Antigua and Barbuda", "AG"], + "306": ["Curacao, Sint Maarten, Bonaire, Sint Eustatcius and Saba - Netherlands (Kingdom of the)", "NL"], + "307": ["Aruba - Netherlands (Kingdom of the)", "AW"], + "308": ["Bahamas (Commonwealth of the)", "BS"], + "309": ["Bahamas (Commonwealth of the)", "BS"], + "310": ["Bermuda - United Kingdom of Great Britain and Northern Ireland", "BM"], + "311": ["Bahamas (Commonwealth of the)", "BS"], + "312": ["Belize", "BZ"], + "314": ["Barbados", "BB"], + "316": ["Canada", "CA"], + "319": ["Cayman Islands - United Kingdom of Great Britain and Northern Ireland", "KY"], + "321": ["Costa Rica", "CR"], + "323": ["Cuba", "CU"], + "325": ["Dominica (Commonwealth of)", "DM"], + "327": ["Dominican Republic", "DO"], + "329": ["Guadeloupe (French Department of) - France", "FR"], + "330": ["Grenada", "GD"], + "331": ["Greenland - Denmark", "GL"], + "332": ["Guatemala (Republic of)", "GT"], + "334": ["Honduras (Republic of)", "HN"], + "336": ["Haiti (Republic of)", "HT"], + "338": ["United States of America", "US"], + "339": ["Jamaica", "JM"], + "341": ["Saint Kitts and Nevis (Federation of)", "KN"], + "343": ["Saint Lucia", "LC"], + "345": ["Mexico", "MX"], + "347": ["Martinique (French Department of) - France", "FR"], + "348": ["Montserrat - United Kingdom of Great Britain and Northern Ireland", "MS"], + "350": ["Nicaragua", "NI"], + "351": ["Panama (Republic of)", "PA"], + "352": ["Panama (Republic of)", "PA"], + "353": ["Panama (Republic of)", "PA"], + "354": ["Panama (Republic of)", "PA"], + "355": ["Puerto Rico - United States of America", "PR"], + "356": ["Puerto Rico - United States of America", "PR"], + "357": ["Puerto Rico - United States of America", "PR"], + "358": ["Puerto Rico - United States of America", "PR"], + "359": ["El Salvador (Republic of)", "SV"], + "361": ["Saint Pierre and Miquelon (Territorial Collectivity of) - France", "PM"], + "362": ["Trinidad and Tobago", "TT"], + "364": ["Turks and Caicos Islands - United Kingdom of Great Britain and Northern Ireland", "TC"], + "366": ["United States of America", "US"], + "367": ["United States of America", "US"], + "368": ["United States of America", "US"], + "369": ["United States of America", "US"], + "370": ["Panama (Republic of)", "PA"], + "371": ["Panama (Republic of)", "PA"], + "372": ["Panama (Republic of)", "PA"], + "373": ["Panama (Republic of)", "PA"], + "375": ["Saint Vincent and the Grenadines", "VC"], + "376": ["Saint Vincent and the Grenadines", "VC"], + "377": ["Saint Vincent and the Grenadines", "VC"], + "378": ["British Virgin Islands - United Kingdom of Great Britain and Northern Ireland", "VG"], + "379": ["United States Virgin Islands - United States of America", "VI"], + "401": ["Afghanistan", "AF"], + "403": ["Saudi Arabia (Kingdom of)", "SA"], + "405": ["Bangladesh (People's Republic of)", "BD"], + "408": ["Bahrain (Kingdom of)", "BH"], + "410": ["Bhutan (Kingdom of)", "BT"], + "412": ["China (People's Republic of)", "CN"], + "413": ["China (People's Republic of)", "CN"], + "414": ["China (People's Republic of)", "CN"], + "416": ["Taiwan (Province of China) - China (People's Republic of)", "TW"], + "417": ["Sri Lanka (Democratic Socialist Republic of)", "LK"], + "419": ["India (Republic of)", "Territory"], + "422": ["Iran (Islamic Republic of)", "IR"], + "423": ["Azerbaijan (Republic of)", "AZ"], + "425": ["Iraq (Republic of)", "IQ"], + "428": ["Israel (State of)", "IL"], + "431": ["Japan", "JP"], + "432": ["Japan", "JP"], + "434": ["Turkmenistan", "TM"], + "436": ["Kazakhstan (Republic of)", "KZ"], + "437": ["Uzbekistan (Republic of)", "UZ"], + "438": ["Jordan (Hashemite Kingdom of)", "JO"], + "440": ["Korea (Republic of)", "KR"], + "441": ["Korea (Republic of)", "KR"], + "443": ["State of Palestine (In accordance with Resolution 99 Rev. Guadalajara, 2010)", "PS"], + "445": ["Democratic People's Republic of Korea", "KP"], + "447": ["Kuwait (State of)", "KW"], + "450": ["Lebanon", "LB"], + "451": ["Kyrgyz Republic", "KG"], + "453": ["Macao (Special Administrative Region of China) - China (People's Republic of)", "MO"], + "455": ["Maldives (Republic of)", "MV"], + "457": ["Mongolia", "MN"], + "459": ["Nepal (Federal Democratic Republic of)", "NP"], + "461": ["Oman (Sultanate of)", "OM"], + "463": ["Pakistan (Islamic Republic of)", "PK"], + "466": ["Qatar (State of)", "QA"], + "468": ["Syrian Arab Republic", "SY"], + "470": ["United Arab Emirates", "AE"], + "472": ["Tajikistan (Republic of)", "TJ"], + "473": ["Yemen (Republic of)", "YE"], + "475": ["Yemen (Republic of)", "YE"], + "477": ["Hong Kong (Special Administrative Region of China) - China (People's Republic of)", "HK"], + "478": ["Bosnia and Herzegovina", "BA"], + "501": ["Adelie Land - France", "FR"], + "503": ["Australia", "AU"], + "506": ["Myanmar (Union of)", "MM"], + "508": ["Brunei Darussalam", "BN"], + "510": ["Micronesia (Federated States of)", "FM"], + "511": ["Palau (Republic of)", "PW"], + "512": ["New Zealand", "NZ"], + "514": ["Cambodia (Kingdom of)", "KH"], + "515": ["Cambodia (Kingdom of)", "KH"], + "516": ["Christmas Island (Indian Ocean) - Australia", "CX"], + "518": ["Cook Islands - New Zealand", "CK"], + "520": ["Fiji (Republic of)", "FJ"], + "523": ["Cocos (Keeling) Islands - Australia", "61"], + "525": ["Indonesia (Republic of)", "ID"], + "529": ["Kiribati (Republic of)", "KI"], + "531": ["Lao People's Democratic Republic", "LA"], + "533": ["Malaysia", "MY"], + "536": ["Northern Mariana Islands (Commonwealth of the) - United States of America", "MP"], + "538": ["Marshall Islands (Republic of the)", "MH"], + "540": ["New Caledonia - France", "NC"], + "542": ["Niue - New Zealand", "NU"], + "544": ["Nauru (Republic of)", "NR"], + "546": ["French Polynesia - France", "PF"], + "548": ["Philippines (Republic of the)", "PH"], + "553": ["Papua New Guinea", "PG"], + "555": ["Pitcairn Island - United Kingdom of Great Britain and Northern Ireland", "PN"], + "557": ["Solomon Islands", "SB"], + "559": ["American Samoa - United States of America", "AS"], + "561": ["Samoa (Independent State of)", "AS"], + "563": ["Singapore (Republic of)", "SG"], + "564": ["Singapore (Republic of)", "SG"], + "565": ["Singapore (Republic of)", "SG"], + "566": ["Singapore (Republic of)", "SG"], + "567": ["Thailand", "TH"], + "570": ["Tonga (Kingdom of)", "TO"], + "572": ["Tuvalu", "TV"], + "574": ["Viet Nam (Socialist Republic of)", "VN"], + "576": ["Vanuatu (Republic of)", "VU"], + "577": ["Vanuatu (Republic of)", "VU"], + "578": ["Wallis and Futuna Islands - France", "WF"], + "601": ["South Africa (Republic of)", "ZA"], + "603": ["Angola (Republic of)", "AO"], + "605": ["Algeria (People's Democratic Republic of)", "DZ"], + "607": ["Saint Paul and Amsterdam Islands - France", "FR"], + "608": ["Ascension Island - United Kingdom of Great Britain and Northern Ireland", "GB"], + "609": ["Burundi (Republic of)", "BI"], + "610": ["Benin (Republic of)", "BJ"], + "611": ["Botswana (Republic of)", "BW"], + "612": ["Central African Republic", "CF"], + "613": ["Cameroon (Republic of)", "CM"], + "615": ["Congo (Republic of the)", "CD"], + "616": ["Comoros (Union of the)", "KM"], + "617": ["Cabo Verde (Republic of)", "CV"], + "618": ["Crozet Archipelago - France", "FR"], + "619": ["Côte d'Ivoire (Republic of)", "CI"], + "620": ["Comoros (Union of the)", "KM"], + "621": ["Djibouti (Republic of)", "DJ"], + "622": ["Egypt (Arab Republic of)", "EG"], + "624": ["Ethiopia (Federal Democratic Republic of)", "ET"], + "625": ["Eritrea", "ER"], + "626": ["Gabonese Republic", "GA"], + "627": ["Ghana", "GH"], + "629": ["Gambia (Republic of the)", "GM"], + "630": ["Guinea-Bissau (Republic of)", "GQ"], + "631": ["Equatorial Guinea (Republic of)", "GQ"], + "632": ["Guinea (Republic of)", "GQ"], + "633": ["Burkina Faso", "BF"], + "634": ["Kenya (Republic of)", "KE"], + "635": ["Kerguelen Islands - France", "FR"], + "636": ["Liberia (Republic of)", "LR"], + "637": ["Liberia (Republic of)", "LR"], + "638": ["South Sudan (Republic of)", "SS"], + "642": ["Libya", "LY"], + "644": ["Lesotho (Kingdom of)", "LS"], + "645": ["Mauritius (Republic of)", "MU"], + "647": ["Madagascar (Republic of)", "MG"], + "649": ["Mali (Republic of)", "ML"], + "650": ["Mozambique (Republic of)", "MZ"], + "654": ["Mauritania (Islamic Republic of)", "MR"], + "655": ["Malawi", "MW"], + "656": ["Niger (Republic of the)", "NE"], + "657": ["Nigeria (Federal Republic of)", "NG"], + "659": ["Namibia (Republic of)", "NA"], + "660": ["Reunion (French Department of) - France", "RE"], + "661": ["Rwanda (Republic of)", "RW"], + "662": ["Sudan (Republic of the)", "SS"], + "663": ["Senegal (Republic of)", "SN"], + "664": ["Seychelles (Republic of)", "SC"], + "665": ["Saint Helena - United Kingdom of Great Britain and Northern Ireland", "SH"], + "666": ["Somalia (Federal Republic of)", "SO"], + "667": ["Sierra Leone", "SL"], + "668": ["Sao Tome and Principe (Democratic Republic of)", "ST"], + "669": ["Swaziland (Kingdom of)", "SZ"], + "670": ["Chad (Republic of)", "TD"], + "671": ["Togolese Republic", "TG"], + "672": ["Tunisia", "TN"], + "674": ["Tanzania (United Republic of)", "TZ"], + "675": ["Uganda (Republic of)", "UG"], + "676": ["Democratic Republic of the Congo", "CD"], + "677": ["Tanzania (United Republic of)", "TZ"], + "678": ["Zambia (Republic of)", "ZM"], + "679": ["Zimbabwe (Republic of)", "ZW"], + "701": ["Argentine Republic", "AR"], + "710": ["Brazil (Federative Republic of)", "BR"], + "720": ["Bolivia (Plurinational State of)", "BO"], + "725": ["Chile", "CL"], + "730": ["Colombia (Republic of)", "CO"], + "735": ["Ecuador", "EC"], + "740": ["Falkland Islands (Malvinas) - United Kingdom of Great Britain and Northern Ireland", "FK"], + "745": ["Guiana (French Department of) - France", "GY"], + "750": ["Guyana", "GY"], + "755": ["Paraguay (Republic of)", "PY"], + "760": ["Peru", "PE"], + "765": ["Suriname (Republic of)", "SR"], + "770": ["Uruguay (Eastern Republic of)", "UY"], + "775": ["Venezuela (Bolivarian Republic of)", "VE"] } const AID_TO_NAV = { - '0' : 'Default, Type of Aid to Navigation not specified', - '1' : 'Reference point', - '2' : 'RACON (radar transponder marking a navigation hazard)', - '3' : 'Fixed structure off shore, such as oil platforms, wind farms,rigs. (Note: This code should identify an obstruction that is fitted with an Aid-to-Navigation AIS station.)', - '4' : 'Spare, Reserved for future use.', - '5' : 'Light, without sectors', - '6' : 'Light, with sectors', - '7' : 'Leading Light Front', - '8' : 'Leading Light Rear', - '9' : 'Beacon, Cardinal N', - '10 ' : 'Beacon, Cardinal E', - '11' : 'Beacon, Cardinal S', - '12' : 'Beacon, Cardinal W', - '13' : 'Beacon, Port hand', - '14' : 'Beacon, Starboard hand', - '15' : 'Beacon, Preferred Channel port hand', - '16' : 'Beacon, Preferred Channel starboard hand', - '17' : 'Beacon, Isolated danger', - '18' : 'Beacon, Safe water', - '19' : 'Beacon, Special mark', - '20' : 'Cardinal Mark N', - '21' : 'Cardinal Mark E', - '22' : 'Cardinal Mark S', - '23' : 'Cardinal Mark W', - '24' : 'Port hand Mark', - '25' : 'Starboard hand Mark', - '26' : 'Preferred Channel Port hand', - '27' : 'Preferred Channel Starboard hand', - '28' : 'Isolated danger', - '29' : 'Safe Water', - '30' : 'Special Mark', - '31' : 'Light Vessel / LANBY / Rigs' }; + '0': 'Default, Type of Aid to Navigation not specified', + '1': 'Reference point', + '2': 'RACON (radar transponder marking a navigation hazard)', + '3': 'Fixed structure off shore, such as oil platforms, wind farms,rigs. (Note: This code should identify an obstruction that is fitted with an Aid-to-Navigation AIS station.)', + '4': 'Spare, Reserved for future use.', + '5': 'Light, without sectors', + '6': 'Light, with sectors', + '7': 'Leading Light Front', + '8': 'Leading Light Rear', + '9': 'Beacon, Cardinal N', + '10 ': 'Beacon, Cardinal E', + '11': 'Beacon, Cardinal S', + '12': 'Beacon, Cardinal W', + '13': 'Beacon, Port hand', + '14': 'Beacon, Starboard hand', + '15': 'Beacon, Preferred Channel port hand', + '16': 'Beacon, Preferred Channel starboard hand', + '17': 'Beacon, Isolated danger', + '18': 'Beacon, Safe water', + '19': 'Beacon, Special mark', + '20': 'Cardinal Mark N', + '21': 'Cardinal Mark E', + '22': 'Cardinal Mark S', + '23': 'Cardinal Mark W', + '24': 'Port hand Mark', + '25': 'Starboard hand Mark', + '26': 'Preferred Channel Port hand', + '27': 'Preferred Channel Starboard hand', + '28': 'Isolated danger', + '29': 'Safe Water', + '30': 'Special Mark', + '31': 'Light Vessel / LANBY / Rigs' +}; const EPFD = { - '0' : 'Undefined', - '1' : 'GPS', - '2' : 'GLONASS', - '3' : 'Combined GPS/GLONASS', - '4' : 'Loran-C', - '5' : 'Chayka', - '6' : 'Integrated navigation system', - '7' : 'Surveyed', - '8' : 'Galileo' + '0': 'Undefined', + '1': 'GPS', + '2': 'GLONASS', + '3': 'Combined GPS/GLONASS', + '4': 'Loran-C', + '5': 'Chayka', + '6': 'Integrated navigation system', + '7': 'Surveyed', + '8': 'Galileo' } const UNITS = { - 'aisType' : 'number', - 'channel' : 'string', - 'repeatInd' : 'number', - 'mmsi' : 'number', - 'class' : 'string', - 'latitude' : 'deg', - 'longitude' : 'deg', - 'posAccuracy' : 'boolean', - 'navStatus' : 'index', - 'navStatusStr' : 'string', - 'utcYear' : 'year', - 'utcMonth' : 'month', - 'utcDay' : 'day', - 'utcHour' : 'hour', - 'utcMinute' : 'min', - 'utcSecond' : 's', - 'epfd' : 'index', - 'epfdStr' : 'string', - 'callSign' : 'string', - 'name' : 'string', - 'aisVer' : 'number', - 'imo' : 'number', - 'shipType' : 'index', - 'shipTypeStr' : 'string', - 'dimToBow' : 'm', - 'dimToBowStatus' : 'string', - 'dimToStern' : 'm', - 'dimToSternStatus' : 'string', - 'dimToPort' : 'm', - 'dimToPortStatus' : 'string', - 'dimToStbrd' : 'm', - 'dimToStbrdStatus' : 'string', - 'etaMonth' : 'month', - 'etaDay' : 'day', - 'etaHour' : 'h', - 'etaMinute' : 'min', - 'draught' : 'm', - 'destination' : 'string', - 'heading' : 'deg', - 'sogStatus' : 'string', - 'sog' : 'kn', - 'cog' : 'deg', - 'utcTsSec' : 's', - 'utcTsStatus' : 'string', - 'partNo' : 'number', - 'vendorId' : 'string', - 'mothershipMmsi' : 'string', - 'rotStatus' : 'string', - 'rot' : 'deg/min', - 'offPosInd' : 'string', - 'aidType' : 'index', - 'aidTypeStr' : 'string', - 'nameExt' : 'string', - 'midCountry' : 'string', - 'midCountryIso' : 'string', - 'mmsiType' : 'string', - 'text' : 'string', - 'dac' : 'number', - 'fid' : 'number', - 'data' : 'binary', - 'vin' : 'string', - 'length' : 'number', - 'beam' : 'number', - 'shipTypeERI' : 'index', - 'hazard' : 'number', - 'load' : 'number', - 'speedQuality' : 'boolean', - 'courseQuality' : 'boolean', - 'headingQuality' : 'boolean', - } + 'aisType': 'number', + 'channel': 'string', + 'repeatInd': 'number', + 'mmsi': 'number', + 'class': 'string', + 'latitude': 'deg', + 'longitude': 'deg', + 'posAccuracy': 'boolean', + 'navStatus': 'index', + 'navStatusStr': 'string', + 'utcYear': 'year', + 'utcMonth': 'month', + 'utcDay': 'day', + 'utcHour': 'hour', + 'utcMinute': 'min', + 'utcSecond': 's', + 'epfd': 'index', + 'epfdStr': 'string', + 'callSign': 'string', + 'name': 'string', + 'aisVer': 'number', + 'imo': 'number', + 'shipType': 'index', + 'shipTypeStr': 'string', + 'dimToBow': 'm', + 'dimToBowStatus': 'string', + 'dimToStern': 'm', + 'dimToSternStatus': 'string', + 'dimToPort': 'm', + 'dimToPortStatus': 'string', + 'dimToStbrd': 'm', + 'dimToStbrdStatus': 'string', + 'etaMonth': 'month', + 'etaDay': 'day', + 'etaHour': 'h', + 'etaMinute': 'min', + 'draught': 'm', + 'destination': 'string', + 'heading': 'deg', + 'sogStatus': 'string', + 'sog': 'kn', + 'cog': 'deg', + 'utcTsSec': 's', + 'utcTsStatus': 'string', + 'partNo': 'number', + 'vendorId': 'string', + 'mothershipMmsi': 'string', + 'rotStatus': 'string', + 'rot': 'deg/min', + 'offPosInd': 'string', + 'aidType': 'index', + 'aidTypeStr': 'string', + 'nameExt': 'string', + 'midCountry': 'string', + 'midCountryIso': 'string', + 'mmsiType': 'string', + 'text': 'string', + 'dac': 'number', + 'fid': 'number', + 'data': 'binary', + 'vin': 'string', + 'length': 'number', + 'beam': 'number', + 'shipTypeERI': 'index', + 'hazard': 'number', + 'load': 'number', + 'speedQuality': 'boolean', + 'courseQuality': 'boolean', + 'headingQuality': 'boolean', + 'avgWindSpeed': 'kn', + 'avgGustSpeed': 'kn', + 'avgWindDirection': 'deg', + 'avgGustDirection': 'deg', + 'airTemperature': 'degC', + 'relativeHumidity': 'pct', + 'dewPoint': 'degC', + 'airPressure': 'hPa', + 'airPressureTendency': 'index', + 'horizontalVisibility': 'NM', + 'waterLevel': 'm', + 'waterLevelTrend': 'index', + 'curr1Speed': 'kn', + 'curr1Direction': 'deg', + 'curr2Speed': 'kn', + 'curr2Direction': 'deg', + 'curr2Level': 'm', + 'curr3Speed': 'kn', + 'curr3Direction': 'deg', + 'curr3Level': 'm', + 'sigWaveHeight': 'm', + 'wavePeriod': 's', + 'waveDirection': 'deg', + 'swellHeight': 'm', + 'swellPeriod': 's', + 'swellDirection': 'deg', + 'seaState': 'index', + 'waterTemperature': 'degC', + 'precipitationType': 'index', + 'salinity': 'ppt', + 'ice': 'index', +} let suppValuesValid = false; -let suppValues : SuppValues = {}; +let suppValues: SuppValues = {}; export default class AisMessage { - _valid : Validity; - _errMsg : string; - _bitField : AisBitField; - _aisType : number; - _mmsi : ?number; - _channel : string; - _utcSec : ?number; - _rot : ?number; - _sog : ?number; - _cog : ?number; - _lat : ?number; - _lon : ?number; - _hdg : ?number; - _dimToBow : ?number; - _dimToStern : ?number; - _dimToPort : ?number; - _dimToStbrd : ?number; - - static fromError(valid : Validity,errMsg : string,aisType : number = 0,channel : string = '') : AisMessage { - let msg = new AisMessage(aisType,new AisBitField('',0),channel); + _valid: Validity; + _errMsg: string; + _bitField: AisBitField; + _aisType: number; + _mmsi: ?number; + _channel: string; + _utcSec: ?number; + _rot: ?number; + _sog: ?number; + _cog: ?number; + _lat: ?number; + _lon: ?number; + _hdg: ?number; + _dimToBow: ?number; + _dimToStern: ?number; + _dimToPort: ?number; + _dimToStbrd: ?number; + + static fromError(valid: Validity, errMsg: string, aisType: number = 0, channel: string = ''): AisMessage { + let msg = new AisMessage(aisType, new AisBitField('', 0), channel); msg.setResult(valid, errMsg); return msg; } - static getUnit(field : string) : ?string { + static getUnit(field: string): ?string { return UNITS[field]; } - getUnit(field : string) : ?string { + getUnit(field: string): ?string { return UNITS[field]; } - constructor(aisType : number,bitField : AisBitField, channel : string) { + constructor(aisType: number, bitField: AisBitField, channel: string) { this._aisType = aisType; this._bitField = bitField; this._channel = channel; @@ -617,105 +649,106 @@ export default class AisMessage { this._errMsg = '' } - get supportedValues() : SuppValues { - if(!suppValuesValid) { - SUPPORTED_FIELDS.forEach((field)=>{ + get supportedValues(): SuppValues { + if (!suppValuesValid) { + SUPPORTED_FIELDS.forEach((field) => { let unit = AisMessage.getUnit(field); - if(unit) { + if (unit) { suppValues[field] = unit; } else { console.warn(MOD_NAME + 'field without unit encountered:' + field); - }}); - suppValuesValid = true; - } + } + }); + suppValuesValid = true; + } return suppValues; } - setResult(valid : Validity,errMsg : string) : void { + setResult(valid: Validity, errMsg: string): void { this._valid = valid; this._errMsg = errMsg; } - _formatStr(str : string) : string { + _formatStr(str: string): string { let end = str.indexOf('@'); - if(end > -1) { - return str.substr(0,end); + if (end > -1) { + return str.substr(0, end); } else { return str; } } - get valid() : Validity { + get valid(): Validity { return this._valid; } - get errMsg() : string { + get errMsg(): string { return this._errMsg; } - get aisType() : number { + get aisType(): number { return this._aisType; } - get channel() : string { + get channel(): string { return this._channel; } - get class() : string { + get class(): string { return ''; } - getMidCountry(short : boolean = false) : string { + getMidCountry(short: boolean = false): string { let midStr = String(this.mmsi); - let country : Array; - if((this.mmsi > 200000000) && (this.mmsi < 800000000)) { - country = MID_TO_COUNTRY[midStr.substr(0,3)]; + let country: Array; + if ((this.mmsi > 200000000) && (this.mmsi < 800000000)) { + country = MID_TO_COUNTRY[midStr.substr(0, 3)]; } else { - switch(midStr.substr(0,2)) { + switch (midStr.substr(0, 2)) { case '98': case '99': - country = MID_TO_COUNTRY[midStr.substr(2,3)]; + country = MID_TO_COUNTRY[midStr.substr(2, 3)]; } } - if(country) { + if (country) { return short ? country[1] : country[0]; } else { return ''; } } - get midCountry() : string { + get midCountry(): string { return this.getMidCountry(false); } - get midCountryIso() : string { + get midCountryIso(): string { return this.getMidCountry(true); } - get mmsiType() : string { + get mmsiType(): string { let midStr = String(this.mmsi); - if((midStr.length > 9) || (midStr.length < 6)) { + if ((midStr.length > 9) || (midStr.length < 6)) { return ''; } let firstDigit = 0; - if(midStr.length === 9) { - firstDigit = midStr.substr(0,1); + if (midStr.length === 9) { + firstDigit = midStr.substr(0, 1); } - switch(firstDigit) { - case '0' : return 'Ship group, coast station, or group of coast stations'; - case '1' : return 'SAR aircraft' - case '2' : - case '3' : - case '4' : - case '5' : - case '6' : - case '7' : return 'Vessel'; - case '8' : return 'Handheld VHF transceiver with DSC and GNSS'; - case '9' : - switch(midStr.substr(0,2)) { + switch (firstDigit) { + case '0': return 'Ship group, coast station, or group of coast stations'; + case '1': return 'SAR aircraft' + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': return 'Vessel'; + case '8': return 'Handheld VHF transceiver with DSC and GNSS'; + case '9': + switch (midStr.substr(0, 2)) { case '97': - switch(midStr.substr(2,1)) { + switch (midStr.substr(2, 1)) { case '0': return 'Search and Rescue Transponder' case '1': return 'Man overboard DSC and/or AIS Device' case '4': return '406 MHz EPIRBs fitted with an AIS Transmitter' @@ -725,183 +758,183 @@ export default class AisMessage { case '99': return 'Aid to Navigation' default: return ''; } - default : return ''; + default: return ''; } } - get repeatInd() : number { - if(this._bitField && (this._bitField.bits >= 8)) { - return this._bitField.getInt(6,2,true); + get repeatInd(): number { + if (this._bitField && (this._bitField.bits >= 8)) { + return this._bitField.getInt(6, 2, true); } else { return NaN; } } - _getMmsi() : number { - if(this._bitField && (this._bitField.bits >= 38)) { - return this._bitField.getInt(8,30,true); + _getMmsi(): number { + if (this._bitField && (this._bitField.bits >= 38)) { + return this._bitField.getInt(8, 30, true); } else { return NaN; } } - get mmsi() : number { - if(typeof this._mmsi !== 'number') { + get mmsi(): number { + if (typeof this._mmsi !== 'number') { this._mmsi = this._getMmsi(); } return this._mmsi; } - get aisVer() : number { + get aisVer(): number { return NaN; } - get imo() : number { + get imo(): number { return NaN; } - get navStatus() : number { + get navStatus(): number { return NaN; } - get navStatusStr() : string { + get navStatusStr(): string { return NAV_STATUS[String(this.navStatus)] || ''; } - _getRawRot() : number { + _getRawRot(): number { return 128; } - get rotStatus() : RotStatus { - if(typeof this._rot !== 'number') { + get rotStatus(): RotStatus { + if (typeof this._rot !== 'number') { this._rot = this._getRawRot(); } - let rot : number = this._rot; - if(rot === 128) { + let rot: number = this._rot; + if (rot === 128) { return 'NA'; } - if(rot === 0) { + if (rot === 0) { return 'NONE'; } return (rot > 0) ? 'RIGHT' : 'LEFT'; } - get rot() : number { - if(typeof this._rot !== 'number') { + get rot(): number { + if (typeof this._rot !== 'number') { this._rot = this._getRawRot(); } - let rot : number = this._rot; - if(Math.abs(rot) < 127) { - return Math.pow(rot / 4.733,2) * Math.sign(rot) ; + let rot: number = this._rot; + if (Math.abs(rot) < 127) { + return Math.pow(rot / 4.733, 2) * Math.sign(rot); } else { return NaN; } } - _getRawHeading() : number { + _getRawHeading(): number { return 511; } - get heading() : number { - if(typeof this._hdg !== 'number') { + get heading(): number { + if (typeof this._hdg !== 'number') { this._hdg = this._getRawHeading(); } return (this._hdg === 511) ? NaN : this._hdg; } - _getRawSog() : number { + _getRawSog(): number { return 1023; } - get sogStatus() : SogStatus { - if(typeof this._sog !== 'number') { + get sogStatus(): SogStatus { + if (typeof this._sog !== 'number') { this._sog = this._getRawSog(); } - let sog : number = this._sog; - if(sog < 1022) return 'VALID'; - if(sog === 1022) return 'HIGH'; - if(sog === 1023) return 'NA'; + let sog: number = this._sog; + if (sog < 1022) return 'VALID'; + if (sog === 1022) return 'HIGH'; + if (sog === 1023) return 'NA'; return 'INVALID'; } - get sog() : number { - if(typeof this._sog !== 'number') { + get sog(): number { + if (typeof this._sog !== 'number') { this._sog = this._getRawSog(); } - let sog : number = this._sog; - if(sog > 1021) { + let sog: number = this._sog; + if (sog > 1021) { return NaN } else { return (sog / 10); } } - _getRawCog() : number { + _getRawCog(): number { return 3600; } - get cog() : number { - if(typeof this._cog !== 'number') { + get cog(): number { + if (typeof this._cog !== 'number') { this._cog = this._getRawCog(); } - return (this._cog !== 3600) ? (this._cog / 10) : NaN; + return (this._cog !== 3600) ? (this._cog / 10) : NaN; } - _getRawLat() : number { + _getRawLat(): number { return INVALID_LAT; } - get latitude() : number { - if(typeof this._lat !== 'number') { + get latitude(): number { + if (typeof this._lat !== 'number') { this._lat = this._getRawLat(); } - let lat : number = this._lat; + let lat: number = this._lat; return (lat === INVALID_LAT) ? NaN : lat / 600000; } - _getRawLon() : number { + _getRawLon(): number { return INVALID_LON; } - get longitude() : number { - if(typeof this._lon !== 'number') { + get longitude(): number { + if (typeof this._lon !== 'number') { this._lon = this._getRawLon(); } - let lon : number = this._lon; + let lon: number = this._lon; return (lon === INVALID_LON) ? NaN : lon / 600000; } - get posAccuracy() : boolean { + get posAccuracy(): boolean { return false; } - get callSign() : string { + get callSign(): string { return ''; } - get name() : string { + get name(): string { return ''; } - _getUtcSec() : number { + _getUtcSec(): number { return 60; } - get utcTsSec() : number { - if(!(typeof this._utcSec === 'number')) { + get utcTsSec(): number { + if (!(typeof this._utcSec === 'number')) { this._utcSec = this._getUtcSec(); } return (this._utcSec < 60) ? this._utcSec : NaN; } - get utcTsStatus() : UtcTsStatus { - if(!(typeof this._utcSec === 'number')) { + get utcTsStatus(): UtcTsStatus { + if (!(typeof this._utcSec === 'number')) { this._utcSec = this._getUtcSec(); } - if(this._utcSec < 60) { + if (this._utcSec < 60) { return 'VALID'; } else { /* 60 if time stamp is not available (default) @@ -910,7 +943,7 @@ export default class AisMessage { reckoning) mode, * 63 if the positioning system is inoperative. */ - switch(this._utcSec) { + switch (this._utcSec) { case 60: return 'NA'; case 61: @@ -925,196 +958,196 @@ export default class AisMessage { } } - get shipType() : number { + get shipType(): number { return 0; } - get shipTypeStr() : string { + get shipTypeStr(): string { return SHIP_TYPE[this.shipType] || ''; } - _getDimToBow() : number { + _getDimToBow(): number { return NaN; } - get dimToBowStatus() : DimStatus { - if(!this._dimToBow) { + get dimToBowStatus(): DimStatus { + if (!this._dimToBow) { this._dimToBow = this._getDimToBow() || NaN; } - switch(this._dimToBow) { + switch (this._dimToBow) { case 0: return 'NA' case 511: return 'HUGE' default: return 'VALID' } } - get dimToBow() : number { - if(!this._dimToBow) { + get dimToBow(): number { + if (!this._dimToBow) { this._dimToBow = this._getDimToBow() || NaN; } - if((this._dimToBow === NaN) || (this._dimToBow === 511)) { + if ((this._dimToBow === NaN) || (this._dimToBow === 511)) { return NaN; } else { return this._dimToBow; } } - _getDimToStern() : number { + _getDimToStern(): number { return NaN; } - get dimToSternStatus() : DimStatus { - if(!this._dimToStern) { + get dimToSternStatus(): DimStatus { + if (!this._dimToStern) { this._dimToStern = this._getDimToStern() || NaN; } - switch(this._dimToStern) { + switch (this._dimToStern) { case 0: return 'NA' case 511: return 'HUGE' default: return 'VALID' } } - get dimToStern() : number { - if(!this._dimToStern) { + get dimToStern(): number { + if (!this._dimToStern) { this._dimToStern = this._getDimToStern() || NaN; } - if((this._dimToStern === NaN) || (this._dimToStern === 511)) { + if ((this._dimToStern === NaN) || (this._dimToStern === 511)) { return NaN; } else { return this._dimToStern; } } - _getDimToPort() : number { + _getDimToPort(): number { return NaN; } - get dimToPortStatus() : DimStatus { - if(!this._dimToPort) { + get dimToPortStatus(): DimStatus { + if (!this._dimToPort) { this._dimToPort = this._getDimToPort() || NaN; } - switch(this._dimToPort) { + switch (this._dimToPort) { case 0: return 'NA' case 63: return 'HUGE' default: return 'VALID' } } - get dimToPort() : number { - if(!this._dimToPort) { + get dimToPort(): number { + if (!this._dimToPort) { this._dimToPort = this._getDimToPort() || NaN; } - if((this._dimToPort === NaN) || (this._dimToPort === 63)) { + if ((this._dimToPort === NaN) || (this._dimToPort === 63)) { return NaN; } else { return this._dimToPort; } } - _getDimToStbrd() : number { + _getDimToStbrd(): number { return NaN; } - get dimToStbrdStatus() : DimStatus { - if(!this._dimToStbrd) { + get dimToStbrdStatus(): DimStatus { + if (!this._dimToStbrd) { this._dimToStbrd = this._getDimToStbrd() || NaN; } - switch(this._dimToStbrd) { + switch (this._dimToStbrd) { case 0: return 'NA' case 63: return 'HUGE' default: return 'VALID' } } - get dimToStbrd() : number { - if(!this._dimToStbrd) { + get dimToStbrd(): number { + if (!this._dimToStbrd) { this._dimToStbrd = this._getDimToStbrd() || NaN; } - if((this._dimToStbrd === NaN) || (this._dimToStbrd === 63)) { + if ((this._dimToStbrd === NaN) || (this._dimToStbrd === 63)) { return NaN; } else { return this._dimToStbrd; } } - get epfd() : number { + get epfd(): number { return 0; } - get epfdStr() : string { + get epfdStr(): string { return EPFD[this.epfd.toString()] || ''; } - get etaMonth() : number { + get etaMonth(): number { return NaN; } - get etaDay() : number { + get etaDay(): number { return NaN; } - get etaHour() : number { + get etaHour(): number { return NaN; } - get etaMinute() : number { + get etaMinute(): number { return NaN; } - get draught() : number { + get draught(): number { return NaN; } - get destination() : string { + get destination(): string { return ''; } - get partNo() : number { + get partNo(): number { return NaN; } - get vendorId() : string { + get vendorId(): string { return ''; } // Type 4 Message - get utcYear() : number { + get utcYear(): number { return NaN; } - get utcMonth() : number { + get utcMonth(): number { return NaN; } - get utcDay() : number { + get utcDay(): number { return NaN; } - get utcHour() : number { + get utcHour(): number { return NaN; } - get utcMinute() : number { + get utcMinute(): number { return NaN; } - get utcSecond() : number { + get utcSecond(): number { return NaN; } - get aidType() : number { + get aidType(): number { return NaN; } - get aidTypeStr() : string { + get aidTypeStr(): string { return AID_TO_NAV[this.aidType.toString()] || ''; } - get nameExt() : string { + get nameExt(): string { return ''; } - get offPosInd() : 'IN_POS' | 'OFF_POS' | 'NA' { + get offPosInd(): 'IN_POS' | 'OFF_POS' | 'NA' { return 'NA'; } From 2eb2a1e04c2b788e487961a6ae0c6f1ed9ef50a9 Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Sun, 16 Nov 2025 15:54:44 +0100 Subject: [PATCH 15/33] fix aisparser data decoding --- lib/Ais08MsgDac1Fid31.js | 19 +++++++++++-------- src/Ais08MsgDac1Fid31.js | 20 ++++++++++++-------- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/lib/Ais08MsgDac1Fid31.js b/lib/Ais08MsgDac1Fid31.js index f8f229e..48f377b 100644 --- a/lib/Ais08MsgDac1Fid31.js +++ b/lib/Ais08MsgDac1Fid31.js @@ -316,7 +316,8 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { key: 'airPressure', get: function get() { var val = this._bitField.getInt(182, 9, true); - if (val >= 511) { + // TODO: this should be fixed with an indexed value + if (val >= 403) { return NaN; } else { return val; @@ -350,7 +351,7 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { if (val >= 127) { return NaN; } else { - return val; + return val / 10.0; } } @@ -363,7 +364,7 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { if (val >= 4001) { return NaN; } else { - return val; + return val / 100.0 - 10; } } @@ -498,7 +499,7 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { if (val >= 251) { return NaN; } else { - return val; + return val / 10.0; } } @@ -537,7 +538,7 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { if (val >= 251) { return NaN; } else { - return val; + return val / 10.0; } } @@ -572,7 +573,9 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: 'seaState', get: function get() { - return this._bitField.getInt(322, 4, true); + var val = this._bitField.getInt(322, 4, true); + if (val >= 13) return NaN; + return val; } // |326-335 | 10 |Water Temperature |waterTemperature |I4| -10.0 to +50.0°C (0.1°C); 501 = not available @@ -584,7 +587,7 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { if (val >= 501) { return NaN; } else { - return val; + return val / 10.0; } } @@ -621,7 +624,7 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { if (val >= 510) { return NaN; } else { - return val; + return val / 10.0; } } diff --git a/src/Ais08MsgDac1Fid31.js b/src/Ais08MsgDac1Fid31.js index 17929d6..d346ffb 100644 --- a/src/Ais08MsgDac1Fid31.js +++ b/src/Ais08MsgDac1Fid31.js @@ -291,7 +291,8 @@ export default class Ais8MsgDac1Fid31 extends AisMessage { // |182-190 | 9 |Air Pressure |airPressure |u| 800-1200 hPa; 511 = not available get airPressure(): number { let val = this._bitField.getInt(182, 9, true); - if (val >= 511) { + // TODO: this should be fixed with an indexed value + if (val >= 403) { return NaN; } else { return val; @@ -319,7 +320,7 @@ export default class Ais8MsgDac1Fid31 extends AisMessage { if (val >= 127) { return NaN; } else { - return val; + return val / 10.0; } } @@ -329,7 +330,7 @@ export default class Ais8MsgDac1Fid31 extends AisMessage { if (val >= 4001) { return NaN; } else { - return val; + return val / 100.0 - 10; } } @@ -435,7 +436,7 @@ export default class Ais8MsgDac1Fid31 extends AisMessage { if (val >= 251) { return NaN; } else { - return val; + return val / 10.0; } } @@ -465,7 +466,7 @@ export default class Ais8MsgDac1Fid31 extends AisMessage { if (val >= 251) { return NaN; } else { - return val; + return val / 10.0; } } @@ -491,7 +492,10 @@ export default class Ais8MsgDac1Fid31 extends AisMessage { // |322-325 | 4 |Sea State |seaState |u| Beaufort code get seaState(): number { - return this._bitField.getInt(322, 4, true); + let val = this._bitField.getInt(322, 4, true); + if (val >= 13) + return NaN; + return val; } // |326-335 | 10 |Water Temperature |waterTemperature |I4| -10.0 to +50.0°C (0.1°C); 501 = not available @@ -500,7 +504,7 @@ export default class Ais8MsgDac1Fid31 extends AisMessage { if (val >= 501) { return NaN; } else { - return val; + return val / 10.0; } } @@ -531,7 +535,7 @@ export default class Ais8MsgDac1Fid31 extends AisMessage { if (val >= 510) { return NaN; } else { - return val; + return val / 10.0; } } From 9c2b4cf96e8230574278b16249d8e31bef4eb083 Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Sun, 16 Nov 2025 15:58:53 +0100 Subject: [PATCH 16/33] fix air pressure --- lib/Ais08MsgDac1Fid31.js | 9 ++++++--- src/Ais08MsgDac1Fid31.js | 9 ++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/Ais08MsgDac1Fid31.js b/lib/Ais08MsgDac1Fid31.js index 48f377b..6c063f4 100644 --- a/lib/Ais08MsgDac1Fid31.js +++ b/lib/Ais08MsgDac1Fid31.js @@ -316,11 +316,14 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { key: 'airPressure', get: function get() { var val = this._bitField.getInt(182, 9, true); - // TODO: this should be fixed with an indexed value - if (val >= 403) { + if (val == 0) { + return 799; + } else if (val == 402) { + return 1201; + } else if (val >= 403) { return NaN; } else { - return val; + return 800 + val; } } diff --git a/src/Ais08MsgDac1Fid31.js b/src/Ais08MsgDac1Fid31.js index d346ffb..c75b7d0 100644 --- a/src/Ais08MsgDac1Fid31.js +++ b/src/Ais08MsgDac1Fid31.js @@ -291,11 +291,14 @@ export default class Ais8MsgDac1Fid31 extends AisMessage { // |182-190 | 9 |Air Pressure |airPressure |u| 800-1200 hPa; 511 = not available get airPressure(): number { let val = this._bitField.getInt(182, 9, true); - // TODO: this should be fixed with an indexed value - if (val >= 403) { + if (val == 0) { + return 799; + } else if (val == 402) { + return 1201; + } else if (val >= 403) { return NaN; } else { - return val; + return 800 + val; } } From 18d1ab9806f77ac315ff21963b6c89799b16535f Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Tue, 18 Nov 2025 12:11:44 +0100 Subject: [PATCH 17/33] handle dacc1 fid 30 --- lib/Ais08MsgDac1Fid30.js | 143 ++++++++++++++++++ lib/AisMessage.js | 3 +- lib/AisParser.js | 13 +- src/Ais08MsgDac1Fid30.js | 109 +++++++++++++ src/AisMessage.js | 1 + src/AisParser.js | 6 +- src/__tests__/AisParserTest.js | 2 +- .../testHelper/AisBitfieldDataGenerator.js | 10 ++ 8 files changed, 281 insertions(+), 6 deletions(-) create mode 100644 lib/Ais08MsgDac1Fid30.js create mode 100644 src/Ais08MsgDac1Fid30.js diff --git a/lib/Ais08MsgDac1Fid30.js b/lib/Ais08MsgDac1Fid30.js new file mode 100644 index 0000000..b467930 --- /dev/null +++ b/lib/Ais08MsgDac1Fid30.js @@ -0,0 +1,143 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _AisBitField = require('./AisBitField'); + +var _AisBitField2 = _interopRequireDefault(_AisBitField); + +var _AisMessage2 = require('./AisMessage'); + +var _AisMessage3 = _interopRequireDefault(_AisMessage2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/* + * AisParser: A parser for NMEA0183 AIS messages. + * Copyright (C) 2025 Davide Gessa . + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the Apache License Version 2.0 as published by + * Apache Software foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the Apache License Version 2.0 + * along with this program. If not, see . + */ + +var MOD_NAME = 'Ais8MsgDac1Fid30'; + +var SUPPORTED_FIELDS = ['aisType', 'channel', 'repeatInd', 'mmsi', 'dac', 'fid', 'msgLinkageId', 'text']; + +var suppValuesValid = false; +var suppValues = {}; + +/* +|============================================================================== +|Field |Len |Description |Member |T|Units +|0-5 | 6 |Message Type |type |u|Constant: 14 +|6-7 | 2 |Repeat Indicator |repeat |u|Message repeat count +|8-37 | 30 |MMSI |mmsi |u|9 decimal digits +|38-39 | 2 |spare | |u|not used +|40-49 | 10 |Designated area code |dac |u| +|50-55 | 6 |Function identifier |fid |u| +|56-65 | 10 |Message linkage id | |u| +|66-... | <=155 |Free text |text |t|6 bit ascii + + +|============================================================================== +*/ + +var Ais8MsgDac1Fid30 = function (_AisMessage) { + _inherits(Ais8MsgDac1Fid30, _AisMessage); + + function Ais8MsgDac1Fid30(aisType, bitField, channel) { + _classCallCheck(this, Ais8MsgDac1Fid30); + + var _this = _possibleConstructorReturn(this, (Ais8MsgDac1Fid30.__proto__ || Object.getPrototypeOf(Ais8MsgDac1Fid30)).call(this, aisType, bitField, channel)); + + if (bitField.bits >= 104 && bitField.bits <= 1028) { + _this._valid = 'VALID'; + } else { + _this._valid = 'INVALID'; + _this._errMsg = 'invalid bitcount for type 8 msg dac 1 fid 30:' + bitField.bits; + } + return _this; + } + + _createClass(Ais8MsgDac1Fid30, [{ + key: 'class', + get: function get() { + return 'A'; + } + }, { + key: 'supportedValues', + get: function get() { + if (!suppValuesValid) { + SUPPORTED_FIELDS.forEach(function (field) { + var unit = _AisMessage3.default.getUnit(field); + if (unit) { + suppValues[field] = unit; + } else { + console.warn(MOD_NAME + 'field without unit encountered:' + field); + } + }); + suppValuesValid = true; + } + return suppValues; + } + + // |40-49 | 10 |Designated area code |dac |u| + + }, { + key: 'dac', + get: function get() { + return this._bitField.getInt(40, 10, true); + } + + // |50-55 | 6 |Function identifier |fid |u| + + }, { + key: 'fid', + get: function get() { + return this._bitField.getInt(50, 6, true); + } + + // |56-65 | 10 |Message linkage id | |u| + + }, { + key: 'msgLinkageId', + get: function get() { + return this._bitField.getInt(56, 10, true); + } + + // |66-... | <=155 |Free text |text |t|6 bit ascii + + }, { + key: 'text', + get: function get() { + var textStart = 66; + var maxTextBits = Math.min(this._bitField.bits - textStart, 155); + var textLength = maxTextBits - maxTextBits % 6; + return this._formatStr(this._bitField.getString(textStart, textLength).replace(/^@+/, '')); + } + }]); + + return Ais8MsgDac1Fid30; +}(_AisMessage3.default); + +exports.default = Ais8MsgDac1Fid30; diff --git a/lib/AisMessage.js b/lib/AisMessage.js index a0fceb7..b7ce64e 100644 --- a/lib/AisMessage.js +++ b/lib/AisMessage.js @@ -598,7 +598,8 @@ var UNITS = { 'waterTemperature': 'degC', 'precipitationType': 'index', 'salinity': 'ppt', - 'ice': 'index' + 'ice': 'index', + 'msgLinkageId': 'number' }; var suppValuesValid = false; diff --git a/lib/AisParser.js b/lib/AisParser.js index 6da26fd..f1d1bc3 100644 --- a/lib/AisParser.js +++ b/lib/AisParser.js @@ -48,10 +48,14 @@ var _Ais08MsgDac200Fid = require('./Ais08MsgDac200Fid10'); var _Ais08MsgDac200Fid2 = _interopRequireDefault(_Ais08MsgDac200Fid); -var _Ais08MsgDac1Fid = require('./Ais08MsgDac1Fid31'); +var _Ais08MsgDac1Fid = require('./Ais08MsgDac1Fid30'); var _Ais08MsgDac1Fid2 = _interopRequireDefault(_Ais08MsgDac1Fid); +var _Ais08MsgDac1Fid3 = require('./Ais08MsgDac1Fid31'); + +var _Ais08MsgDac1Fid4 = _interopRequireDefault(_Ais08MsgDac1Fid3); + var _Ais14Msg = require('./Ais14Msg'); var _Ais14Msg2 = _interopRequireDefault(_Ais14Msg); @@ -191,10 +195,13 @@ var AisParser = function () { var sentence = new _Ais08Msg2.default(aisType, bitField, part[4]); if (sentence.dac == 200 && sentence.fid == 10) { return new _Ais08MsgDac200Fid2.default(aisType, bitField, part[4]); - } else if (sentence.dac == 1 && sentence.fid == 31) { + } else if (sentence.dac == 1 && sentence.fid == 30) { return new _Ais08MsgDac1Fid2.default(aisType, bitField, part[4]); + } else if (sentence.dac == 1 && sentence.fid == 31) { + return new _Ais08MsgDac1Fid4.default(aisType, bitField, part[4]); + } else { + return sentence; } - return sentence; case 14: return new _Ais14Msg2.default(aisType, bitField, part[4]); case 18: diff --git a/src/Ais08MsgDac1Fid30.js b/src/Ais08MsgDac1Fid30.js new file mode 100644 index 0000000..042d843 --- /dev/null +++ b/src/Ais08MsgDac1Fid30.js @@ -0,0 +1,109 @@ +// @flow + +/* + * AisParser: A parser for NMEA0183 AIS messages. + * Copyright (C) 2025 Davide Gessa . + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the Apache License Version 2.0 as published by + * Apache Software foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the Apache License Version 2.0 + * along with this program. If not, see . + */ + +import AisBitField from './AisBitField'; +import AisMessage from './AisMessage'; +import type { SuppValues } from './AisMessage'; + +const MOD_NAME = 'Ais8MsgDac1Fid30'; + +const SUPPORTED_FIELDS = [ + 'aisType', + 'channel', + 'repeatInd', + 'mmsi', + 'dac', + 'fid', + 'msgLinkageId', + 'text' +]; + +let suppValuesValid = false; +let suppValues: SuppValues = {}; + +/* +|============================================================================== +|Field |Len |Description |Member |T|Units +|0-5 | 6 |Message Type |type |u|Constant: 14 +|6-7 | 2 |Repeat Indicator |repeat |u|Message repeat count +|8-37 | 30 |MMSI |mmsi |u|9 decimal digits +|38-39 | 2 |spare | |u|not used +|40-49 | 10 |Designated area code |dac |u| +|50-55 | 6 |Function identifier |fid |u| +|56-65 | 10 |Message linkage id | |u| +|66-... | <=155 |Free text |text |t|6 bit ascii + + +|============================================================================== +*/ + +export default class Ais8MsgDac1Fid30 extends AisMessage { + constructor(aisType: number, bitField: AisBitField, channel: string) { + super(aisType, bitField, channel); + if (bitField.bits >= 104 && bitField.bits <= 1028) { + this._valid = 'VALID'; + } else { + this._valid = 'INVALID'; + this._errMsg = 'invalid bitcount for type 8 msg dac 1 fid 30:' + bitField.bits; + } + } + + get class(): string { + return 'A'; + } + + get supportedValues(): SuppValues { + if (!suppValuesValid) { + SUPPORTED_FIELDS.forEach((field) => { + let unit = AisMessage.getUnit(field); + if (unit) { + suppValues[field] = unit; + } else { + console.warn(MOD_NAME + 'field without unit encountered:' + field); + } + }); + suppValuesValid = true; + } + return suppValues; + } + + + // |40-49 | 10 |Designated area code |dac |u| + get dac(): number { + return this._bitField.getInt(40, 10, true); + } + + // |50-55 | 6 |Function identifier |fid |u| + get fid(): number { + return this._bitField.getInt(50, 6, true); + } + + // |56-65 | 10 |Message linkage id | |u| + get msgLinkageId(): number { + return this._bitField.getInt(56, 10, true); + } + + // |66-... | <=155 |Free text |text |t|6 bit ascii + get text() : string { + const textStart = 66; + const maxTextBits = Math.min(this._bitField.bits - textStart, 155); + const textLength = maxTextBits - (maxTextBits % 6); + return this._formatStr(this._bitField.getString(textStart, textLength).replace(/^@+/, '')); + } +} diff --git a/src/AisMessage.js b/src/AisMessage.js index d1a2a82..8ab2623 100644 --- a/src/AisMessage.js +++ b/src/AisMessage.js @@ -603,6 +603,7 @@ const UNITS = { 'precipitationType': 'index', 'salinity': 'ppt', 'ice': 'index', + 'msgLinkageId': 'number' } let suppValuesValid = false; diff --git a/src/AisParser.js b/src/AisParser.js index ce53a9f..2e63cea 100644 --- a/src/AisParser.js +++ b/src/AisParser.js @@ -25,6 +25,7 @@ import Ais04Msg from './Ais04Msg'; import Ais05Msg from './Ais05Msg'; import Ais08Msg from './Ais08Msg'; import Ais08MsgDac200Fid10 from './Ais08MsgDac200Fid10'; +import Ais08MsgDac1Fid30 from './Ais08MsgDac1Fid30'; import Ais08MsgDac1Fid31 from './Ais08MsgDac1Fid31'; import Ais14Msg from './Ais14Msg'; import Ais18Msg from './Ais18Msg'; @@ -173,10 +174,13 @@ class AisParser { let sentence = new Ais08Msg(aisType, bitField, part[4]); if (sentence.dac == 200 && sentence.fid == 10) { return new Ais08MsgDac200Fid10(aisType, bitField, part[4]); + } else if (sentence.dac == 1 && sentence.fid == 30) { + return new Ais08MsgDac1Fid30(aisType, bitField, part[4]); } else if (sentence.dac == 1 && sentence.fid == 31) { return new Ais08MsgDac1Fid31(aisType, bitField, part[4]); + } else { + return sentence; } - return sentence; case 14: return new Ais14Msg(aisType, bitField, part[4]); case 18: diff --git a/src/__tests__/AisParserTest.js b/src/__tests__/AisParserTest.js index 3d14ff5..934e6cd 100644 --- a/src/__tests__/AisParserTest.js +++ b/src/__tests__/AisParserTest.js @@ -18,7 +18,7 @@ test('testing real data ', () => { expect(msg.aisType).toBe(rad.aisType) for (let j in msg.supportedValues) { - // console.log(j, msg[j]) + // console.log(j, msg[j]); expect(msg[j]).toBeDefined() } } diff --git a/src/__tests__/testHelper/AisBitfieldDataGenerator.js b/src/__tests__/testHelper/AisBitfieldDataGenerator.js index 011d514..8519925 100644 --- a/src/__tests__/testHelper/AisBitfieldDataGenerator.js +++ b/src/__tests__/testHelper/AisBitfieldDataGenerator.js @@ -50,6 +50,16 @@ const AIS_REAL_DATA: Array = [ channel: 'B', aisType: 18, valid: 'VALID' + }, { + aisStr: '!AIVDM,1,1,,B,83`fG1?6600,0*47', + channel: 'B', + aisType: 8, + valid: 'VALID' + // }, { + // aisStr: '!BSVDM,1,1,,A,83=Go200GBH<5CCB5==1>PeP5<>5CdB?BF9;dDB?>859=d6E7<5>,0*69', + // channel: 'A', + // aisType: 8, + // valid: 'VALID' } ] From 9cb06c0f96b909362215b4115822941c2c830ff1 Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Wed, 19 Nov 2025 12:05:49 +0100 Subject: [PATCH 18/33] handle dac1fid21 weatherreport --- lib/Ais08MsgDac1Fid21.js | 346 ++++++++++++++++++ lib/AisParser.js | 14 +- src/Ais08MsgDac1Fid21.js | 271 ++++++++++++++ src/AisParser.js | 3 + src/__tests__/AisParserTest.js | 2 + .../testHelper/AisBitfieldDataGenerator.js | 12 +- 6 files changed, 643 insertions(+), 5 deletions(-) create mode 100644 lib/Ais08MsgDac1Fid21.js create mode 100644 src/Ais08MsgDac1Fid21.js diff --git a/lib/Ais08MsgDac1Fid21.js b/lib/Ais08MsgDac1Fid21.js new file mode 100644 index 0000000..726066e --- /dev/null +++ b/lib/Ais08MsgDac1Fid21.js @@ -0,0 +1,346 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _AisBitField = require('./AisBitField'); + +var _AisBitField2 = _interopRequireDefault(_AisBitField); + +var _AisMessage2 = require('./AisMessage'); + +var _AisMessage3 = _interopRequireDefault(_AisMessage2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/* + * AisParser: A parser for NMEA0183 AIS messages. + * Copyright (C) 2025 Davide Gessa . + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the Apache License Version 2.0 as published by + * Apache Software foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the Apache License Version 2.0 + * along with this program. If not, see . + */ + +var MOD_NAME = 'Ais8MsgDac1Fid21'; + +var SUPPORTED_FIELDS = ['aisType', 'channel', 'repeatInd', 'mmsi', 'dac', 'fid', 'reportType', 'location', 'longitude', 'latitude', 'utcDay', 'utcHour', 'utcMinute', 'presentWeather', 'horizontalVisibility', 'relativeHumidity', 'avgWindSpeed', 'avgWindDirection', 'airPressure', 'airPressureTendency', 'airTemperature', 'waterTemperature', 'sigWaveHeight', 'waveDirection', 'swellHeight', 'swellPeriod', 'swellDirection']; + +var suppValuesValid = false; +var suppValues = {}; + +/* +|============================================================================== +|Field |Len |Description |Member |T|Units +|0-5 | 6 |Message Type |type |u|Constant: 14 +|6-7 | 2 |Repeat Indicator |repeat |u|Message repeat count +|8-37 | 30 |MMSI |mmsi |u|9 decimal digits +|38-39 | 2 |spare | |u|not used +|40-49 | 10 |Designated area code |dac |u| +|50-55 | 6 |Function identifier |fid |u| +|56 | 1 |Type of report |rep_type |u| 1=WMO weather report 0=ship report +|57-176 | 120 |Geographic Location |location |t|6 bit ascii 20 char +|177-201 | 25 |Longitude |lon |I4| Long in 1/1000 min, +-180 deg as per 2's complement (e => +, w => -, 181 not available) +|202-225 | 24 |Latitude |lat |I4| Lat in 1/1000 min, +-90 deg as per 2's complement (n => +, s => -, 91 not available) +|226-230 | 5 |Day (UTC) |day |u|1-31; 0 = N/A (default) +|231-235 | 5 |Hour (UTC) |hour |u|0-23; 24 = N/A (default) +|236-241 | 6 |Minute (UTC) |minute |u|0-59; 60 = N/A (default) +|242-245 | 4 |Present weather |present_weather |u|WMO Code 45501, 8 = N/A (default) +|246-253 | 8 |Horizontal Visibility |horiz_visibility |u |0–126 (0.1 NM steps, up to 12.6 NM); 127=N/A +|254-260 | 7 |Relative Humidity |rel_humidity |u |0–100%, 101=N/A, 102–127 reserved +|261-267 | 7 |Avg 10-min wind speed |avg_wind_speed |u|0-125 knots; 127 = N/A (default) +|268-276 | 9 |Avg 10-min wind direction|avg_wind_dir |u|0-359 degree; 360 = N/A (default) +|277-285 | 9 |Air Pressure |air_pressure |u |0=799 hPa/less, 1–401=800–1200 hPa, 402=1201+/N/A=511 +|286-289 | 4 |Air Pressure Tendency |air_press_tend |u |WMO FM13 +|290-300 | 11 |Air Temperature |air_temp |I4|Dry bulb temp, 0.1°C steps, -60.0 to +60.0°C (-1024=N/A, 601–1023 reserved) +|301-310 | 10 |Water Temperature |water_temp |I4|-10.0 to +50.0°C, 0.1°C steps, 501=N/A +|311-316 | 6 |Wave Period |wave_period |u |0–60 s, 61=N/A +|317-324 | 8 |Significant Wave Height |sig_wave_height |u |0–251 (0.1 m), 251=N/A +|325-333 | 9 |Wave Direction |wave_dir |u |0–359°, 360=N/A +|334-341 | 8 |Swell Height |swell_height |u |0–251 (0.1 m), 251=N/A +|342-350 | 9 |Swell Direction |swell_dir |u |0–359°, 360=N/A +|351-356 | 6 |Swell Period |swell_period |u |0–60 s, 61=N/A +|357-359 | 3 |Spare | |u |Not used, set to zero +|============================================================================== +*/ + +var Ais8MsgDac1Fid31 = function (_AisMessage) { + _inherits(Ais8MsgDac1Fid31, _AisMessage); + + function Ais8MsgDac1Fid31(aisType, bitField, channel) { + _classCallCheck(this, Ais8MsgDac1Fid31); + + var _this = _possibleConstructorReturn(this, (Ais8MsgDac1Fid31.__proto__ || Object.getPrototypeOf(Ais8MsgDac1Fid31)).call(this, aisType, bitField, channel)); + + if (bitField.bits == 360) { + _this._valid = 'VALID'; + } else if (bitField.getInt(56, 1, true) != 0) { + _this._valid = 'UNSUPPORTED'; + _this._errMsg = 'invalid report type; WMO weather report are not supported'; + } else { + _this._valid = 'INVALID'; + _this._errMsg = 'invalid bitcount for type 8 msg dac 1 fid 31:' + bitField.bits; + } + return _this; + } + + _createClass(Ais8MsgDac1Fid31, [{ + key: '_getRawLon', + + + // |177-201 | 25 |Longitude |lon |I4| Long in 1/1000 min, 2's complement + value: function _getRawLon() { + return this._bitField.getInt(177, 25, false); + } + + // |202-225 | 24 |Latitude |lat |I4| Lat in 1/1000 min, 2's complement + + }, { + key: '_getRawLat', + value: function _getRawLat() { + return this._bitField.getInt(202, 24, false); + } + + // |226-230 | 5 |Day (UTC) |day |u|1-31; 0 = N/A + + }, { + key: 'class', + get: function get() { + return 'A'; + } + }, { + key: 'supportedValues', + get: function get() { + if (!suppValuesValid) { + SUPPORTED_FIELDS.forEach(function (field) { + var unit = _AisMessage3.default.getUnit(field); + if (unit) { + suppValues[field] = unit; + } else { + console.warn(MOD_NAME + 'field without unit encountered:' + field); + } + }); + suppValuesValid = true; + } + return suppValues; + } + + // |40-49 | 10 |Designated area code |dac |u| + + }, { + key: 'dac', + get: function get() { + return this._bitField.getInt(40, 10, true); + } + + // |50-55 | 6 |Function identifier |fid |u| + + }, { + key: 'fid', + get: function get() { + return this._bitField.getInt(50, 6, true); + } + + // |56 | 1 |Type of report |rep_type |u| 1=WMO weather report 0=ship report + + }, { + key: 'repType', + get: function get() { + return this._bitField.getInt(56, 1, true); + } + + // |57-176 | 120 |Geographic Location |location |t|6 bit ascii 20 char + + }, { + key: 'location', + get: function get() { + return this._bitField.getString(57, 120); + } + }, { + key: 'day', + get: function get() { + var v = this._bitField.getInt(226, 5, true); + return v === 0 ? NaN : v; + } + + // |231-235 | 5 |Hour (UTC) |hour |u|0-23; 24 = N/A + + }, { + key: 'hour', + get: function get() { + var v = this._bitField.getInt(231, 5, true); + return v >= 24 ? NaN : v; + } + + // |236-241 | 6 |Minute (UTC) |minute |u|0-59; 60 = N/A + + }, { + key: 'minute', + get: function get() { + var v = this._bitField.getInt(236, 6, true); + return v >= 60 ? NaN : v; + } + + // |242-245 | 4 |Present weather |present_weather |u|WMO Code 45501, 8 = N/A + + }, { + key: 'presentWeather', + get: function get() { + var v = this._bitField.getInt(242, 4, true); + return v === 8 ? NaN : v; + } + + // |246-253 | 8 |Horizontal Visibility |horiz_visibility |u|0–126 (0.1 NM), 127=N/A + + }, { + key: 'horizVisibility', + get: function get() { + var v = this._bitField.getInt(246, 8, true); + return v >= 127 ? NaN : v / 10.0; + } + + // |254-260 | 7 |Relative Humidity |rel_humidity |u|0–100%, 101=N/A + + }, { + key: 'relHumidity', + get: function get() { + var v = this._bitField.getInt(254, 7, true); + return v >= 101 ? NaN : v; + } + + // |261-267 | 7 |Avg 10-min wind speed |avg_wind_speed |u|0-125 kt; 127=N/A + + }, { + key: 'avgWindSpeed', + get: function get() { + var v = this._bitField.getInt(261, 7, true); + return v >= 127 ? NaN : v; + } + + // |268-276 | 9 |Avg 10-min wind direction|avg_wind_dir |u|0-359°, 360=N/A + + }, { + key: 'avgWindDir', + get: function get() { + var v = this._bitField.getInt(268, 9, true); + return v >= 360 ? NaN : v; + } + + // |277-285 | 9 |Air Pressure |air_pressure |u| + // 0=799 or less, 1–401=800–1200, 402=1201+, 403–511=N/A + + }, { + key: 'airPressure', + get: function get() { + var v = this._bitField.getInt(277, 9, true); + if (v === 0) return 799; + if (v === 402) return 1201; + if (v >= 403) return NaN; + return 800 + v; + } + + // |286-289 | 4 |Air Pressure Tendency |air_press_tend |u|WMO FM13 + + }, { + key: 'airPressTendRaw', + get: function get() { + var v = this._bitField.getInt(286, 4, true); + return v > 8 ? NaN : v; + } + + // |290-300 | 11 |Air Temperature |air_temp |I4|0.1°C, -60.0..+60.0, -1024=N/A + + }, { + key: 'airTemp', + get: function get() { + var v = this._bitField.getInt(290, 11, false); + if (v === -1024) return NaN; + return v / 10.0; + } + + // |301-310 | 10 |Water Temperature |water_temp |I4|-10.0..+50.0, 0.1°C, 501=N/A + + }, { + key: 'waterTemp', + get: function get() { + var v = this._bitField.getInt(301, 10, false); + if (v >= 501) return NaN; + return v / 10.0; + } + + // |311-316 | 6 |Wave Period |wave_period |u|0–60 s, 61=N/A + + }, { + key: 'wavePeriod', + get: function get() { + var v = this._bitField.getInt(311, 6, true); + return v >= 61 ? NaN : v; + } + + // |317-324 | 8 |Significant Wave Height |sig_wave_height |u|0–251 (0.1 m), 251=N/A + + }, { + key: 'sigWaveHeight', + get: function get() { + var v = this._bitField.getInt(317, 8, true); + return v >= 251 ? NaN : v / 10.0; + } + + // |325-333 | 9 |Wave Direction |wave_dir |u|0–359°, 360=N/A + + }, { + key: 'waveDir', + get: function get() { + var v = this._bitField.getInt(325, 9, true); + return v >= 360 ? NaN : v; + } + + // |334-341 | 8 |Swell Height |swell_height |u|0–251 (0.1 m), 251=N/A + + }, { + key: 'swellHeight', + get: function get() { + var v = this._bitField.getInt(334, 8, true); + return v >= 251 ? NaN : v / 10.0; + } + + // |342-350 | 9 |Swell Direction |swell_dir |u|0–359°, 360=N/A + + }, { + key: 'swellDir', + get: function get() { + var v = this._bitField.getInt(342, 9, true); + return v >= 360 ? NaN : v; + } + + // |351-356 | 6 |Swell Period |swell_period |u|0–60 s, 61=N/A + + }, { + key: 'swellPeriod', + get: function get() { + var v = this._bitField.getInt(351, 6, true); + return v >= 61 ? NaN : v; + } + }]); + + return Ais8MsgDac1Fid31; +}(_AisMessage3.default); + +exports.default = Ais8MsgDac1Fid31; diff --git a/lib/AisParser.js b/lib/AisParser.js index f1d1bc3..34b0b03 100644 --- a/lib/AisParser.js +++ b/lib/AisParser.js @@ -48,14 +48,18 @@ var _Ais08MsgDac200Fid = require('./Ais08MsgDac200Fid10'); var _Ais08MsgDac200Fid2 = _interopRequireDefault(_Ais08MsgDac200Fid); -var _Ais08MsgDac1Fid = require('./Ais08MsgDac1Fid30'); +var _Ais08MsgDac1Fid = require('./Ais08MsgDac1Fid21'); var _Ais08MsgDac1Fid2 = _interopRequireDefault(_Ais08MsgDac1Fid); -var _Ais08MsgDac1Fid3 = require('./Ais08MsgDac1Fid31'); +var _Ais08MsgDac1Fid3 = require('./Ais08MsgDac1Fid30'); var _Ais08MsgDac1Fid4 = _interopRequireDefault(_Ais08MsgDac1Fid3); +var _Ais08MsgDac1Fid5 = require('./Ais08MsgDac1Fid31'); + +var _Ais08MsgDac1Fid6 = _interopRequireDefault(_Ais08MsgDac1Fid5); + var _Ais14Msg = require('./Ais14Msg'); var _Ais14Msg2 = _interopRequireDefault(_Ais14Msg); @@ -195,10 +199,12 @@ var AisParser = function () { var sentence = new _Ais08Msg2.default(aisType, bitField, part[4]); if (sentence.dac == 200 && sentence.fid == 10) { return new _Ais08MsgDac200Fid2.default(aisType, bitField, part[4]); - } else if (sentence.dac == 1 && sentence.fid == 30) { + } else if (sentence.dac == 1 && sentence.fid == 21) { return new _Ais08MsgDac1Fid2.default(aisType, bitField, part[4]); - } else if (sentence.dac == 1 && sentence.fid == 31) { + } else if (sentence.dac == 1 && sentence.fid == 30) { return new _Ais08MsgDac1Fid4.default(aisType, bitField, part[4]); + } else if (sentence.dac == 1 && sentence.fid == 31) { + return new _Ais08MsgDac1Fid6.default(aisType, bitField, part[4]); } else { return sentence; } diff --git a/src/Ais08MsgDac1Fid21.js b/src/Ais08MsgDac1Fid21.js new file mode 100644 index 0000000..de90a78 --- /dev/null +++ b/src/Ais08MsgDac1Fid21.js @@ -0,0 +1,271 @@ +// @flow + +/* + * AisParser: A parser for NMEA0183 AIS messages. + * Copyright (C) 2025 Davide Gessa . + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the Apache License Version 2.0 as published by + * Apache Software foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the Apache License Version 2.0 + * along with this program. If not, see . + */ + +import AisBitField from './AisBitField'; +import AisMessage from './AisMessage'; +import type { SuppValues } from './AisMessage'; + +export type Weather = 'CLEAR' | 'CLOUDY' | 'RAIN' | 'FOG' | 'SNOW' | 'HURRICANE' | 'MONSOON' | 'THUNDERSTORM' | 'NA' | 'RESERVED'; + +const MOD_NAME = 'Ais8MsgDac1Fid21'; + +const SUPPORTED_FIELDS = [ + 'aisType', + 'channel', + 'repeatInd', + 'mmsi', + 'dac', + 'fid', + 'reportType', + 'location', + 'longitude', + 'latitude', + 'utcDay', + 'utcHour', + 'utcMinute', + 'presentWeather', + 'horizontalVisibility', + 'relativeHumidity', + 'avgWindSpeed', + 'avgWindDirection', + 'airPressure', + 'airPressureTendency', + 'airTemperature', + 'waterTemperature', + 'sigWaveHeight', + 'waveDirection', + 'swellHeight', + 'swellPeriod', + 'swellDirection', +]; + +let suppValuesValid = false; +let suppValues: SuppValues = {}; + +/* +|============================================================================== +|Field |Len |Description |Member |T|Units +|0-5 | 6 |Message Type |type |u|Constant: 14 +|6-7 | 2 |Repeat Indicator |repeat |u|Message repeat count +|8-37 | 30 |MMSI |mmsi |u|9 decimal digits +|38-39 | 2 |spare | |u|not used +|40-49 | 10 |Designated area code |dac |u| +|50-55 | 6 |Function identifier |fid |u| +|56 | 1 |Type of report |rep_type |u| 1=WMO weather report 0=ship report +|57-176 | 120 |Geographic Location |location |t|6 bit ascii 20 char +|177-201 | 25 |Longitude |lon |I4| Long in 1/1000 min, +-180 deg as per 2's complement (e => +, w => -, 181 not available) +|202-225 | 24 |Latitude |lat |I4| Lat in 1/1000 min, +-90 deg as per 2's complement (n => +, s => -, 91 not available) +|226-230 | 5 |Day (UTC) |day |u|1-31; 0 = N/A (default) +|231-235 | 5 |Hour (UTC) |hour |u|0-23; 24 = N/A (default) +|236-241 | 6 |Minute (UTC) |minute |u|0-59; 60 = N/A (default) +|242-245 | 4 |Present weather |present_weather |u|WMO Code 45501, 8 = N/A (default) +|246-253 | 8 |Horizontal Visibility |horiz_visibility |u |0–126 (0.1 NM steps, up to 12.6 NM); 127=N/A +|254-260 | 7 |Relative Humidity |rel_humidity |u |0–100%, 101=N/A, 102–127 reserved +|261-267 | 7 |Avg 10-min wind speed |avg_wind_speed |u|0-125 knots; 127 = N/A (default) +|268-276 | 9 |Avg 10-min wind direction|avg_wind_dir |u|0-359 degree; 360 = N/A (default) +|277-285 | 9 |Air Pressure |air_pressure |u |0=799 hPa/less, 1–401=800–1200 hPa, 402=1201+/N/A=511 +|286-289 | 4 |Air Pressure Tendency |air_press_tend |u |WMO FM13 +|290-300 | 11 |Air Temperature |air_temp |I4|Dry bulb temp, 0.1°C steps, -60.0 to +60.0°C (-1024=N/A, 601–1023 reserved) +|301-310 | 10 |Water Temperature |water_temp |I4|-10.0 to +50.0°C, 0.1°C steps, 501=N/A +|311-316 | 6 |Wave Period |wave_period |u |0–60 s, 61=N/A +|317-324 | 8 |Significant Wave Height |sig_wave_height |u |0–251 (0.1 m), 251=N/A +|325-333 | 9 |Wave Direction |wave_dir |u |0–359°, 360=N/A +|334-341 | 8 |Swell Height |swell_height |u |0–251 (0.1 m), 251=N/A +|342-350 | 9 |Swell Direction |swell_dir |u |0–359°, 360=N/A +|351-356 | 6 |Swell Period |swell_period |u |0–60 s, 61=N/A +|357-359 | 3 |Spare | |u |Not used, set to zero +|============================================================================== +*/ +export default class Ais8MsgDac1Fid31 extends AisMessage { + constructor(aisType: number, bitField: AisBitField, channel: string) { + super(aisType, bitField, channel); + if (bitField.bits == 360) { + this._valid = 'VALID'; + } else if (bitField.getInt(56, 1, true) != 0) { + this._valid = 'UNSUPPORTED'; + this._errMsg = 'invalid report type; WMO weather report are not supported'; + } else { + this._valid = 'INVALID'; + this._errMsg = 'invalid bitcount for type 8 msg dac 1 fid 31:' + bitField.bits; + } + } + + get class(): string { + return 'A'; + } + + get supportedValues(): SuppValues { + if (!suppValuesValid) { + SUPPORTED_FIELDS.forEach((field) => { + let unit = AisMessage.getUnit(field); + if (unit) { + suppValues[field] = unit; + } else { + console.warn(MOD_NAME + 'field without unit encountered:' + field); + } + }); + suppValuesValid = true; + } + return suppValues; + } + + // |40-49 | 10 |Designated area code |dac |u| + get dac(): number { + return this._bitField.getInt(40, 10, true); + } + + // |50-55 | 6 |Function identifier |fid |u| + get fid(): number { + return this._bitField.getInt(50, 6, true); + } + + // |56 | 1 |Type of report |rep_type |u| 1=WMO weather report 0=ship report + get repType(): number { + return this._bitField.getInt(56, 1, true); + } + + // |57-176 | 120 |Geographic Location |location |t|6 bit ascii 20 char + get location(): string { + return this._bitField.getString(57, 120); + } + + // |177-201 | 25 |Longitude |lon |I4| Long in 1/1000 min, 2's complement + _getRawLon(): number { + return this._bitField.getInt(177, 25, false); + } + + // |202-225 | 24 |Latitude |lat |I4| Lat in 1/1000 min, 2's complement + _getRawLat(): number { + return this._bitField.getInt(202, 24, false); + } + + // |226-230 | 5 |Day (UTC) |day |u|1-31; 0 = N/A + get day(): number { + const v = this._bitField.getInt(226, 5, true); + return v === 0 ? NaN : v; + } + + // |231-235 | 5 |Hour (UTC) |hour |u|0-23; 24 = N/A + get hour(): number { + const v = this._bitField.getInt(231, 5, true); + return v >= 24 ? NaN : v; + } + + // |236-241 | 6 |Minute (UTC) |minute |u|0-59; 60 = N/A + get minute(): number { + const v = this._bitField.getInt(236, 6, true); + return v >= 60 ? NaN : v; + } + + // |242-245 | 4 |Present weather |present_weather |u|WMO Code 45501, 8 = N/A + get presentWeather(): number { + const v = this._bitField.getInt(242, 4, true); + return v === 8 ? NaN : v; + } + + // |246-253 | 8 |Horizontal Visibility |horiz_visibility |u|0–126 (0.1 NM), 127=N/A + get horizVisibility(): number { + const v = this._bitField.getInt(246, 8, true); + return v >= 127 ? NaN : v / 10.0; + } + + // |254-260 | 7 |Relative Humidity |rel_humidity |u|0–100%, 101=N/A + get relHumidity(): number { + const v = this._bitField.getInt(254, 7, true); + return v >= 101 ? NaN : v; + } + + // |261-267 | 7 |Avg 10-min wind speed |avg_wind_speed |u|0-125 kt; 127=N/A + get avgWindSpeed(): number { + const v = this._bitField.getInt(261, 7, true); + return v >= 127 ? NaN : v; + } + + // |268-276 | 9 |Avg 10-min wind direction|avg_wind_dir |u|0-359°, 360=N/A + get avgWindDir(): number { + const v = this._bitField.getInt(268, 9, true); + return v >= 360 ? NaN : v; + } + + // |277-285 | 9 |Air Pressure |air_pressure |u| + // 0=799 or less, 1–401=800–1200, 402=1201+, 403–511=N/A + get airPressure(): number { + const v = this._bitField.getInt(277, 9, true); + if (v === 0) return 799; + if (v === 402) return 1201; + if (v >= 403) return NaN; + return 800 + v; + } + + // |286-289 | 4 |Air Pressure Tendency |air_press_tend |u|WMO FM13 + get airPressTendRaw(): number { + const v = this._bitField.getInt(286, 4, true); + return v > 8 ? NaN : v; + } + + // |290-300 | 11 |Air Temperature |air_temp |I4|0.1°C, -60.0..+60.0, -1024=N/A + get airTemp(): number { + const v = this._bitField.getInt(290, 11, false); + if (v === -1024) return NaN; + return v / 10.0; + } + + // |301-310 | 10 |Water Temperature |water_temp |I4|-10.0..+50.0, 0.1°C, 501=N/A + get waterTemp(): number { + const v = this._bitField.getInt(301, 10, false); + if (v >= 501) return NaN; + return v / 10.0; + } + + // |311-316 | 6 |Wave Period |wave_period |u|0–60 s, 61=N/A + get wavePeriod(): number { + const v = this._bitField.getInt(311, 6, true); + return v >= 61 ? NaN : v; + } + + // |317-324 | 8 |Significant Wave Height |sig_wave_height |u|0–251 (0.1 m), 251=N/A + get sigWaveHeight(): number { + const v = this._bitField.getInt(317, 8, true); + return v >= 251 ? NaN : v / 10.0; + } + + // |325-333 | 9 |Wave Direction |wave_dir |u|0–359°, 360=N/A + get waveDir(): number { + const v = this._bitField.getInt(325, 9, true); + return v >= 360 ? NaN : v; + } + + // |334-341 | 8 |Swell Height |swell_height |u|0–251 (0.1 m), 251=N/A + get swellHeight(): number { + const v = this._bitField.getInt(334, 8, true); + return v >= 251 ? NaN : v / 10.0; + } + + // |342-350 | 9 |Swell Direction |swell_dir |u|0–359°, 360=N/A + get swellDir(): number { + const v = this._bitField.getInt(342, 9, true); + return v >= 360 ? NaN : v; + } + + // |351-356 | 6 |Swell Period |swell_period |u|0–60 s, 61=N/A + get swellPeriod(): number { + const v = this._bitField.getInt(351, 6, true); + return v >= 61 ? NaN : v; + } +} \ No newline at end of file diff --git a/src/AisParser.js b/src/AisParser.js index 2e63cea..9ef14dc 100644 --- a/src/AisParser.js +++ b/src/AisParser.js @@ -25,6 +25,7 @@ import Ais04Msg from './Ais04Msg'; import Ais05Msg from './Ais05Msg'; import Ais08Msg from './Ais08Msg'; import Ais08MsgDac200Fid10 from './Ais08MsgDac200Fid10'; +import Ais08MsgDac1Fid21 from './Ais08MsgDac1Fid21'; import Ais08MsgDac1Fid30 from './Ais08MsgDac1Fid30'; import Ais08MsgDac1Fid31 from './Ais08MsgDac1Fid31'; import Ais14Msg from './Ais14Msg'; @@ -174,6 +175,8 @@ class AisParser { let sentence = new Ais08Msg(aisType, bitField, part[4]); if (sentence.dac == 200 && sentence.fid == 10) { return new Ais08MsgDac200Fid10(aisType, bitField, part[4]); + } else if (sentence.dac == 1 && sentence.fid == 21) { + return new Ais08MsgDac1Fid21(aisType, bitField, part[4]); } else if (sentence.dac == 1 && sentence.fid == 30) { return new Ais08MsgDac1Fid30(aisType, bitField, part[4]); } else if (sentence.dac == 1 && sentence.fid == 31) { diff --git a/src/__tests__/AisParserTest.js b/src/__tests__/AisParserTest.js index 934e6cd..2d0f645 100644 --- a/src/__tests__/AisParserTest.js +++ b/src/__tests__/AisParserTest.js @@ -15,6 +15,8 @@ test('testing real data ', () => { let msg: AisMessage = parser.parse(rad.aisStr) expect(msg).toBeDefined() expect(msg.valid).toBe(rad.valid) + if (msg.valid != 'VALID') + continue; expect(msg.aisType).toBe(rad.aisType) for (let j in msg.supportedValues) { diff --git a/src/__tests__/testHelper/AisBitfieldDataGenerator.js b/src/__tests__/testHelper/AisBitfieldDataGenerator.js index 8519925..9110833 100644 --- a/src/__tests__/testHelper/AisBitfieldDataGenerator.js +++ b/src/__tests__/testHelper/AisBitfieldDataGenerator.js @@ -55,8 +55,18 @@ const AIS_REAL_DATA: Array = [ channel: 'B', aisType: 8, valid: 'VALID' + }, { + aisStr: '!BSVDM,1,1,,A,83=Go200GBH<5CCB5==1>PeP5<>5CdB?BF9;dDB?>859=d6E7<5>,0*69', + channel: 'A', + aisType: 8, + valid: 'VALID' + }, { + aisStr: '!AIVDM,2,2,7,A,se7p,0*40', + channel: 'A', + aisType: 8, + valid: 'INVALID' // }, { - // aisStr: '!BSVDM,1,1,,A,83=Go200GBH<5CCB5==1>PeP5<>5CdB?BF9;dDB?>859=d6E7<5>,0*69', + // aisStr: '!AIVDM,2,2,0,B,QvUvmEEEOP@,2*64', // channel: 'A', // aisType: 8, // valid: 'VALID' From 1716f12ff025c30667cda38b5e4041303eca28bc Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Wed, 19 Nov 2025 15:43:21 +0100 Subject: [PATCH 19/33] add more dac1 messages support --- lib/Ais08MsgDac1Fid29.js | 143 +++++++++++++++++++++++++++++++++++++++ lib/Ais08MsgDac1Fid30.js | 74 +++++++++++++++----- lib/AisMessage.js | 5 +- lib/AisParser.js | 19 ++++-- src/Ais08MsgDac1Fid29.js | 109 +++++++++++++++++++++++++++++ src/Ais08MsgDac1Fid30.js | 65 +++++++++++++----- src/AisMessage.js | 5 +- src/AisParser.js | 12 +++- 8 files changed, 388 insertions(+), 44 deletions(-) create mode 100644 lib/Ais08MsgDac1Fid29.js create mode 100644 src/Ais08MsgDac1Fid29.js diff --git a/lib/Ais08MsgDac1Fid29.js b/lib/Ais08MsgDac1Fid29.js new file mode 100644 index 0000000..389720c --- /dev/null +++ b/lib/Ais08MsgDac1Fid29.js @@ -0,0 +1,143 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _AisBitField = require('./AisBitField'); + +var _AisBitField2 = _interopRequireDefault(_AisBitField); + +var _AisMessage2 = require('./AisMessage'); + +var _AisMessage3 = _interopRequireDefault(_AisMessage2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/* + * AisParser: A parser for NMEA0183 AIS messages. + * Copyright (C) 2025 Davide Gessa . + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the Apache License Version 2.0 as published by + * Apache Software foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the Apache License Version 2.0 + * along with this program. If not, see . + */ + +var MOD_NAME = 'Ais8MsgDac1Fid29'; + +var SUPPORTED_FIELDS = ['aisType', 'channel', 'repeatInd', 'mmsi', 'dac', 'fid', 'msgLinkageId', 'text']; + +var suppValuesValid = false; +var suppValues = {}; + +/* +|============================================================================== +|Field |Len |Description |Member |T|Units +|0-5 | 6 |Message Type |type |u|Constant: 14 +|6-7 | 2 |Repeat Indicator |repeat |u|Message repeat count +|8-37 | 30 |MMSI |mmsi |u|9 decimal digits +|38-39 | 2 |spare | |u|not used +|40-49 | 10 |Designated area code |dac |u| +|50-55 | 6 |Function identifier |fid |u| +|56-65 | 10 |Message linkage id | |u| +|66-... | <=155 |Free text |text |t|6 bit ascii + + +|============================================================================== +*/ + +var Ais8MsgDac1Fid29 = function (_AisMessage) { + _inherits(Ais8MsgDac1Fid29, _AisMessage); + + function Ais8MsgDac1Fid29(aisType, bitField, channel) { + _classCallCheck(this, Ais8MsgDac1Fid29); + + var _this = _possibleConstructorReturn(this, (Ais8MsgDac1Fid29.__proto__ || Object.getPrototypeOf(Ais8MsgDac1Fid29)).call(this, aisType, bitField, channel)); + + if (bitField.bits >= 72 && bitField.bits <= 1032) { + _this._valid = 'VALID'; + } else { + _this._valid = 'INVALID'; + _this._errMsg = 'invalid bitcount for type 8 msg dac 1 fid 29:' + bitField.bits; + } + return _this; + } + + _createClass(Ais8MsgDac1Fid29, [{ + key: 'class', + get: function get() { + return 'A'; + } + }, { + key: 'supportedValues', + get: function get() { + if (!suppValuesValid) { + SUPPORTED_FIELDS.forEach(function (field) { + var unit = _AisMessage3.default.getUnit(field); + if (unit) { + suppValues[field] = unit; + } else { + console.warn(MOD_NAME + 'field without unit encountered:' + field); + } + }); + suppValuesValid = true; + } + return suppValues; + } + + // |40-49 | 10 |Designated area code |dac |u| + + }, { + key: 'dac', + get: function get() { + return this._bitField.getInt(40, 10, true); + } + + // |50-55 | 6 |Function identifier |fid |u| + + }, { + key: 'fid', + get: function get() { + return this._bitField.getInt(50, 6, true); + } + + // |56-65 | 10 |Message linkage id | |u| + + }, { + key: 'msgLinkageId', + get: function get() { + return this._bitField.getInt(56, 10, true); + } + + // |66-... | <=155 |Free text |text |t|6 bit ascii + + }, { + key: 'text', + get: function get() { + var textStart = 66; + var maxTextBits = Math.min(this._bitField.bits - textStart, 155); + var textLength = maxTextBits - maxTextBits % 6; + return this._formatStr(this._bitField.getString(textStart, textLength).replace(/^@+/, '')); + } + }]); + + return Ais8MsgDac1Fid29; +}(_AisMessage3.default); + +exports.default = Ais8MsgDac1Fid29; diff --git a/lib/Ais08MsgDac1Fid30.js b/lib/Ais08MsgDac1Fid30.js index b467930..1dc6eb9 100644 --- a/lib/Ais08MsgDac1Fid30.js +++ b/lib/Ais08MsgDac1Fid30.js @@ -41,7 +41,7 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" var MOD_NAME = 'Ais8MsgDac1Fid30'; -var SUPPORTED_FIELDS = ['aisType', 'channel', 'repeatInd', 'mmsi', 'dac', 'fid', 'msgLinkageId', 'text']; +var SUPPORTED_FIELDS = ['aisType', 'channel', 'repeatInd', 'mmsi', 'sequence', 'destinationMMSI', 'retransmitted', 'dac', 'fid', 'msgLinkageId', 'text']; var suppValuesValid = false; var suppValues = {}; @@ -52,13 +52,14 @@ var suppValues = {}; |0-5 | 6 |Message Type |type |u|Constant: 14 |6-7 | 2 |Repeat Indicator |repeat |u|Message repeat count |8-37 | 30 |MMSI |mmsi |u|9 decimal digits -|38-39 | 2 |spare | |u|not used -|40-49 | 10 |Designated area code |dac |u| -|50-55 | 6 |Function identifier |fid |u| -|56-65 | 10 |Message linkage id | |u| -|66-... | <=155 |Free text |text |t|6 bit ascii - - +|38-39 | 2 |Seq number |seq |u|0 - 3; refer to § 5.3.1, Annex 2 of ITU-R M.1371-3. +|40-69 | 30 |Destination |dest |u|9 decimal digits +|70 | 1 |Retransmitted flag |retransm |b|0=no retransm / default, 1=retansmitted +|71 | 1 |spare | +|72-81 | 10 |Designated area code |dac |u| +|81-86 | 6 |Function identifier |fid |u| +|87-96 | 10 |Message linkage id | |u| +|97-... | <=161 |Free text |text |t|6 bit ascii |============================================================================== */ @@ -101,39 +102,76 @@ var Ais8MsgDac1Fid30 = function (_AisMessage) { return suppValues; } - // |40-49 | 10 |Designated area code |dac |u| + // |38-39 | 2 |Seq number |seq |u| + + }, { + key: 'sequence', + get: function get() { + return this._bitField.getInt(38, 2, true); + } + + // |40-69 | 30 |Destination |dest |u| + + }, { + key: 'destinationMMSI', + get: function get() { + return this._bitField.getInt(40, 30, true); + } + + // |70 | 1 |Retransmitted flag |retransm |b| + + }, { + key: 'retransmitted', + get: function get() { + return this._bitField.getInt(70, 1, true) === 1; + } + + // |71 | 1 |spare | + + }, { + key: 'spare', + get: function get() { + return this._bitField.getInt(71, 1, true); + } + + // |72-81 | 10 |Designated area code |dac |u| }, { key: 'dac', get: function get() { - return this._bitField.getInt(40, 10, true); + return this._bitField.getInt(72, 10, true); } - // |50-55 | 6 |Function identifier |fid |u| + // |82-87 | 6 |Function identifier |fid |u| }, { key: 'fid', get: function get() { - return this._bitField.getInt(50, 6, true); + return this._bitField.getInt(82, 6, true); } - // |56-65 | 10 |Message linkage id | |u| + // |88-97 | 10 |Message linkage id | |u| }, { key: 'msgLinkageId', get: function get() { - return this._bitField.getInt(56, 10, true); + return this._bitField.getInt(88, 10, true); } - // |66-... | <=155 |Free text |text |t|6 bit ascii + // |98-... | <=161 |Free text |text |t|6 bit ascii }, { key: 'text', get: function get() { - var textStart = 66; - var maxTextBits = Math.min(this._bitField.bits - textStart, 155); + var textStart = 98; + var maxTextBits = Math.min(this._bitField.bits - textStart, 161); var textLength = maxTextBits - maxTextBits % 6; - return this._formatStr(this._bitField.getString(textStart, textLength).replace(/^@+/, '')); + if (textLength <= 0) { + return ''; + } + var raw = this._bitField.getString(textStart, textLength); + // strip leading @ padding and apply existing formatting helper + return this._formatStr(raw.replace(/^@+/, '')); } }]); diff --git a/lib/AisMessage.js b/lib/AisMessage.js index b7ce64e..47507e6 100644 --- a/lib/AisMessage.js +++ b/lib/AisMessage.js @@ -599,7 +599,10 @@ var UNITS = { 'precipitationType': 'index', 'salinity': 'ppt', 'ice': 'index', - 'msgLinkageId': 'number' + 'msgLinkageId': 'number', + 'retransmitted': 'boolean', + 'destinationMMSI': 'number', + 'sequence': 'number' }; var suppValuesValid = false; diff --git a/lib/AisParser.js b/lib/AisParser.js index 34b0b03..39a8846 100644 --- a/lib/AisParser.js +++ b/lib/AisParser.js @@ -52,14 +52,18 @@ var _Ais08MsgDac1Fid = require('./Ais08MsgDac1Fid21'); var _Ais08MsgDac1Fid2 = _interopRequireDefault(_Ais08MsgDac1Fid); -var _Ais08MsgDac1Fid3 = require('./Ais08MsgDac1Fid30'); +var _Ais08MsgDac1Fid3 = require('./Ais08MsgDac1Fid29'); var _Ais08MsgDac1Fid4 = _interopRequireDefault(_Ais08MsgDac1Fid3); -var _Ais08MsgDac1Fid5 = require('./Ais08MsgDac1Fid31'); +var _Ais08MsgDac1Fid5 = require('./Ais08MsgDac1Fid30'); var _Ais08MsgDac1Fid6 = _interopRequireDefault(_Ais08MsgDac1Fid5); +var _Ais08MsgDac1Fid7 = require('./Ais08MsgDac1Fid31'); + +var _Ais08MsgDac1Fid8 = _interopRequireDefault(_Ais08MsgDac1Fid7); + var _Ais14Msg = require('./Ais14Msg'); var _Ais14Msg2 = _interopRequireDefault(_Ais14Msg); @@ -197,14 +201,21 @@ var AisParser = function () { return new _Ais05Msg2.default(aisType, bitField, part[4]); case 8: var sentence = new _Ais08Msg2.default(aisType, bitField, part[4]); + + // This Msg has dac and fid in another position + var d1f30 = new _Ais08MsgDac1Fid6.default(aisType, bitField, part[4]); + if (d1f30._valid === 'VALID' && d1f30.dac == 1 && d1f30.fid == 30) { + return d1f30; + } + if (sentence.dac == 200 && sentence.fid == 10) { return new _Ais08MsgDac200Fid2.default(aisType, bitField, part[4]); } else if (sentence.dac == 1 && sentence.fid == 21) { return new _Ais08MsgDac1Fid2.default(aisType, bitField, part[4]); - } else if (sentence.dac == 1 && sentence.fid == 30) { + } else if (sentence.dac == 1 && sentence.fid == 29) { return new _Ais08MsgDac1Fid4.default(aisType, bitField, part[4]); } else if (sentence.dac == 1 && sentence.fid == 31) { - return new _Ais08MsgDac1Fid6.default(aisType, bitField, part[4]); + return new _Ais08MsgDac1Fid8.default(aisType, bitField, part[4]); } else { return sentence; } diff --git a/src/Ais08MsgDac1Fid29.js b/src/Ais08MsgDac1Fid29.js new file mode 100644 index 0000000..6964d6d --- /dev/null +++ b/src/Ais08MsgDac1Fid29.js @@ -0,0 +1,109 @@ +// @flow + +/* + * AisParser: A parser for NMEA0183 AIS messages. + * Copyright (C) 2025 Davide Gessa . + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the Apache License Version 2.0 as published by + * Apache Software foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the Apache License Version 2.0 + * along with this program. If not, see . + */ + +import AisBitField from './AisBitField'; +import AisMessage from './AisMessage'; +import type { SuppValues } from './AisMessage'; + +const MOD_NAME = 'Ais8MsgDac1Fid29'; + +const SUPPORTED_FIELDS = [ + 'aisType', + 'channel', + 'repeatInd', + 'mmsi', + 'dac', + 'fid', + 'msgLinkageId', + 'text' +]; + +let suppValuesValid = false; +let suppValues: SuppValues = {}; + +/* +|============================================================================== +|Field |Len |Description |Member |T|Units +|0-5 | 6 |Message Type |type |u|Constant: 14 +|6-7 | 2 |Repeat Indicator |repeat |u|Message repeat count +|8-37 | 30 |MMSI |mmsi |u|9 decimal digits +|38-39 | 2 |spare | |u|not used +|40-49 | 10 |Designated area code |dac |u| +|50-55 | 6 |Function identifier |fid |u| +|56-65 | 10 |Message linkage id | |u| +|66-... | <=155 |Free text |text |t|6 bit ascii + + +|============================================================================== +*/ + +export default class Ais8MsgDac1Fid29 extends AisMessage { + constructor(aisType: number, bitField: AisBitField, channel: string) { + super(aisType, bitField, channel); + if (bitField.bits >= 72 && bitField.bits <= 1032) { + this._valid = 'VALID'; + } else { + this._valid = 'INVALID'; + this._errMsg = 'invalid bitcount for type 8 msg dac 1 fid 29:' + bitField.bits; + } + } + + get class(): string { + return 'A'; + } + + get supportedValues(): SuppValues { + if (!suppValuesValid) { + SUPPORTED_FIELDS.forEach((field) => { + let unit = AisMessage.getUnit(field); + if (unit) { + suppValues[field] = unit; + } else { + console.warn(MOD_NAME + 'field without unit encountered:' + field); + } + }); + suppValuesValid = true; + } + return suppValues; + } + + + // |40-49 | 10 |Designated area code |dac |u| + get dac(): number { + return this._bitField.getInt(40, 10, true); + } + + // |50-55 | 6 |Function identifier |fid |u| + get fid(): number { + return this._bitField.getInt(50, 6, true); + } + + // |56-65 | 10 |Message linkage id | |u| + get msgLinkageId(): number { + return this._bitField.getInt(56, 10, true); + } + + // |66-... | <=155 |Free text |text |t|6 bit ascii + get text() : string { + const textStart = 66; + const maxTextBits = Math.min(this._bitField.bits - textStart, 155); + const textLength = maxTextBits - (maxTextBits % 6); + return this._formatStr(this._bitField.getString(textStart, textLength).replace(/^@+/, '')); + } +} diff --git a/src/Ais08MsgDac1Fid30.js b/src/Ais08MsgDac1Fid30.js index 042d843..11534b7 100644 --- a/src/Ais08MsgDac1Fid30.js +++ b/src/Ais08MsgDac1Fid30.js @@ -28,6 +28,9 @@ const SUPPORTED_FIELDS = [ 'channel', 'repeatInd', 'mmsi', + 'sequence', + 'destinationMMSI', + 'retransmitted', 'dac', 'fid', 'msgLinkageId', @@ -43,13 +46,14 @@ let suppValues: SuppValues = {}; |0-5 | 6 |Message Type |type |u|Constant: 14 |6-7 | 2 |Repeat Indicator |repeat |u|Message repeat count |8-37 | 30 |MMSI |mmsi |u|9 decimal digits -|38-39 | 2 |spare | |u|not used -|40-49 | 10 |Designated area code |dac |u| -|50-55 | 6 |Function identifier |fid |u| -|56-65 | 10 |Message linkage id | |u| -|66-... | <=155 |Free text |text |t|6 bit ascii - - +|38-39 | 2 |Seq number |seq |u|0 - 3; refer to § 5.3.1, Annex 2 of ITU-R M.1371-3. +|40-69 | 30 |Destination |dest |u|9 decimal digits +|70 | 1 |Retransmitted flag |retransm |b|0=no retransm / default, 1=retansmitted +|71 | 1 |spare | +|72-81 | 10 |Designated area code |dac |u| +|81-86 | 6 |Function identifier |fid |u| +|87-96 | 10 |Message linkage id | |u| +|97-... | <=161 |Free text |text |t|6 bit ascii |============================================================================== */ @@ -84,26 +88,51 @@ export default class Ais8MsgDac1Fid30 extends AisMessage { } - // |40-49 | 10 |Designated area code |dac |u| + // |38-39 | 2 |Seq number |seq |u| + get sequence(): number { + return this._bitField.getInt(38, 2, true); + } + + // |40-69 | 30 |Destination |dest |u| + get destinationMMSI(): number { + return this._bitField.getInt(40, 30, true); + } + + // |70 | 1 |Retransmitted flag |retransm |b| + get retransmitted(): boolean { + return this._bitField.getInt(70, 1, true) === 1; + } + + // |71 | 1 |spare | + get spare(): number { + return this._bitField.getInt(71, 1, true); + } + + // |72-81 | 10 |Designated area code |dac |u| get dac(): number { - return this._bitField.getInt(40, 10, true); + return this._bitField.getInt(72, 10, true); } - // |50-55 | 6 |Function identifier |fid |u| + // |82-87 | 6 |Function identifier |fid |u| get fid(): number { - return this._bitField.getInt(50, 6, true); + return this._bitField.getInt(82, 6, true); } - // |56-65 | 10 |Message linkage id | |u| + // |88-97 | 10 |Message linkage id | |u| get msgLinkageId(): number { - return this._bitField.getInt(56, 10, true); + return this._bitField.getInt(88, 10, true); } - // |66-... | <=155 |Free text |text |t|6 bit ascii - get text() : string { - const textStart = 66; - const maxTextBits = Math.min(this._bitField.bits - textStart, 155); + // |98-... | <=161 |Free text |text |t|6 bit ascii + get text(): string { + const textStart = 98; + const maxTextBits = Math.min(this._bitField.bits - textStart, 161); const textLength = maxTextBits - (maxTextBits % 6); - return this._formatStr(this._bitField.getString(textStart, textLength).replace(/^@+/, '')); + if (textLength <= 0) { + return ''; + } + const raw = this._bitField.getString(textStart, textLength); + // strip leading @ padding and apply existing formatting helper + return this._formatStr(raw.replace(/^@+/, '')); } } diff --git a/src/AisMessage.js b/src/AisMessage.js index 8ab2623..6a74d19 100644 --- a/src/AisMessage.js +++ b/src/AisMessage.js @@ -603,7 +603,10 @@ const UNITS = { 'precipitationType': 'index', 'salinity': 'ppt', 'ice': 'index', - 'msgLinkageId': 'number' + 'msgLinkageId': 'number', + 'retransmitted': 'boolean', + 'destinationMMSI': 'number', + 'sequence': 'number' } let suppValuesValid = false; diff --git a/src/AisParser.js b/src/AisParser.js index 9ef14dc..e73eb99 100644 --- a/src/AisParser.js +++ b/src/AisParser.js @@ -26,6 +26,7 @@ import Ais05Msg from './Ais05Msg'; import Ais08Msg from './Ais08Msg'; import Ais08MsgDac200Fid10 from './Ais08MsgDac200Fid10'; import Ais08MsgDac1Fid21 from './Ais08MsgDac1Fid21'; +import Ais08MsgDac1Fid29 from './Ais08MsgDac1Fid29'; import Ais08MsgDac1Fid30 from './Ais08MsgDac1Fid30'; import Ais08MsgDac1Fid31 from './Ais08MsgDac1Fid31'; import Ais14Msg from './Ais14Msg'; @@ -173,12 +174,19 @@ class AisParser { return new Ais05Msg(aisType, bitField, part[4]); case 8: let sentence = new Ais08Msg(aisType, bitField, part[4]); + + // This Msg has dac and fid in another position + let d1f30 = new Ais08MsgDac1Fid30(aisType, bitField, part[4]); + if (d1f30._valid === 'VALID' && d1f30.dac == 1 && d1f30.fid == 30) { + return d1f30; + } + if (sentence.dac == 200 && sentence.fid == 10) { return new Ais08MsgDac200Fid10(aisType, bitField, part[4]); } else if (sentence.dac == 1 && sentence.fid == 21) { return new Ais08MsgDac1Fid21(aisType, bitField, part[4]); - } else if (sentence.dac == 1 && sentence.fid == 30) { - return new Ais08MsgDac1Fid30(aisType, bitField, part[4]); + } else if (sentence.dac == 1 && sentence.fid == 29) { + return new Ais08MsgDac1Fid29(aisType, bitField, part[4]); } else if (sentence.dac == 1 && sentence.fid == 31) { return new Ais08MsgDac1Fid31(aisType, bitField, part[4]); } else { From 37d0ce40c6e97a9b140dd42bcfca90dcb68da3fb Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Wed, 19 Nov 2025 16:25:59 +0100 Subject: [PATCH 20/33] handle message 8 dac 367 fid 23 --- lib/Ais08MsgDac367Fid23.js | 232 ++++++++++++++++++ lib/AisMessage.js | 3 +- lib/AisParser.js | 6 + src/Ais08MsgDac367Fid23.js | 181 ++++++++++++++ src/AisMessage.js | 3 +- src/AisParser.js | 3 + .../testHelper/AisBitfieldDataGenerator.js | 10 +- 7 files changed, 431 insertions(+), 7 deletions(-) create mode 100644 lib/Ais08MsgDac367Fid23.js create mode 100644 src/Ais08MsgDac367Fid23.js diff --git a/lib/Ais08MsgDac367Fid23.js b/lib/Ais08MsgDac367Fid23.js new file mode 100644 index 0000000..736efc6 --- /dev/null +++ b/lib/Ais08MsgDac367Fid23.js @@ -0,0 +1,232 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _AisBitField = require('./AisBitField'); + +var _AisBitField2 = _interopRequireDefault(_AisBitField); + +var _AisMessage2 = require('./AisMessage'); + +var _AisMessage3 = _interopRequireDefault(_AisMessage2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/* + * AisParser: A parser for NMEA0183 AIS messages. + * Copyright (C) 2025 Davide Gessa . + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the Apache License Version 2.0 as published by + * Apache Software foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the Apache License Version 2.0 + * along with this program. If not, see . + */ + +var MOD_NAME = 'Ais8MsgDac367Fid23'; + +var SUPPORTED_FIELDS = ['aisType', 'channel', 'repeatInd', 'mmsi', 'dac', 'fid', 'version', 'utcDay', 'utcHour', 'utcMinute', 'longitude', 'latitude', 'airPressure', 'airTemperature', 'avgWindSpeed', 'avgGustSpeed', 'avgWindDirection']; + +var suppValuesValid = false; +var suppValues = {}; + +/* +|============================================================================== +|Field |Len |Description |Member |T|Units +|0-5 | 6 |Message Type |type |u|Constant: 14 +|6-7 | 2 |Repeat Indicator |repeat |u|Message repeat count +|8-37 | 30 |MMSI |mmsi |u|9 decimal digits +|38-39 | 2 |spare | |u|not used +|40-49 | 10 |Designated area code |dac |u| +|50-55 | 6 |Function identifier |fid |u| +|56-58 | 3 |Version |version |u| 0=test, 1-7=version +|59-63 | 5 |Day (UTC) |day |u|1-31; 0 = N/A (default) +|64-68 | 5 |Hour (UTC) |hour |u|0-23; 24 = N/A (default) +|69-74 | 6 |Minute (UTC) |minute |u|0-59; 60 = N/A (default) +|75-99 | 25 |Longitude |lon |I4| Long in 1/1000 min, +-180 deg as per 2's complement (e => +, w => -, 181 not available) +|100-123 | 24 |Latitude |lat |I4| Lat in 1/1000 min, +-90 deg as per 2's complement (n => +, s => -, 91 not available) +|124-132 | 9 |Air Pressure |air_pressure |u |0=799 hPa/less, 1–401=800–1200 hPa, 402=1201+/N/A=511 +|133-143 | 11 |Air Temperature |air_temp |I4|Dry bulb temp, 0.1°C steps, -60.0 to +60.0°C (-1024=N/A, 601–1023 reserved) +|144-150 | 7 |Avg 10-min wind speed |avg_wind_speed |u|0-125 knots; 127 = N/A (default) +|151-157 | 7 |Avg 10-min gust speed|avg_gust_speed |u|0-125 knots; 127 = N/A (default) +|158-166 | 9 |Avg 10-min wind direction|avg_wind_dir |u|0-359 degree; 360 = N/A (default) +|167 | 1 |Spare | |u |Not used, set to zero +|============================================================================== +*/ + +var Ais8MsgDac367Fid23 = function (_AisMessage) { + _inherits(Ais8MsgDac367Fid23, _AisMessage); + + function Ais8MsgDac367Fid23(aisType, bitField, channel) { + _classCallCheck(this, Ais8MsgDac367Fid23); + + var _this = _possibleConstructorReturn(this, (Ais8MsgDac367Fid23.__proto__ || Object.getPrototypeOf(Ais8MsgDac367Fid23)).call(this, aisType, bitField, channel)); + + if (bitField.bits == 168) { + _this._valid = 'VALID'; + } else { + _this._valid = 'INVALID'; + _this._errMsg = 'invalid bitcount for type 8 msg dac 1 fid 31:' + bitField.bits; + } + return _this; + } + + _createClass(Ais8MsgDac367Fid23, [{ + key: '_getRawLon', + + + // |75-99 | 25 |Longitude |lon |I4| Long in 1/1000 min, +-180 deg as per 2's complement (e => +, w => -, 181 not available) + value: function _getRawLon() { + return this._bitField.getInt(75, 25, false); + } + + // |100-123 | 24 |Latitude |lat |I4| Lat in 1/1000 min, +-90 deg as per 2's complement (n => +, s => -, 91 not available) + + }, { + key: '_getRawLat', + value: function _getRawLat() { + return this._bitField.getInt(100, 24, false); + } + + // |124-132 | 9 |Air Pressure |air_pressure |u |0=799 hPa/less, 1–401=800–1200 hPa, 402=1201+/N/A=511 + + }, { + key: 'class', + get: function get() { + return 'A'; + } + }, { + key: 'supportedValues', + get: function get() { + if (!suppValuesValid) { + SUPPORTED_FIELDS.forEach(function (field) { + var unit = _AisMessage3.default.getUnit(field); + if (unit) { + suppValues[field] = unit; + } else { + console.warn(MOD_NAME + 'field without unit encountered:' + field); + } + }); + suppValuesValid = true; + } + return suppValues; + } + + // |40-49 | 10 |Designated area code |dac |u| + + }, { + key: 'dac', + get: function get() { + return this._bitField.getInt(40, 10, true); + } + + // |50-55 | 6 |Function identifier |fid |u| + + }, { + key: 'fid', + get: function get() { + return this._bitField.getInt(50, 6, true); + } + + // |56-58 | 3 |Version |version |u| 0=test, 1-7=version + + }, { + key: 'version', + get: function get() { + return this._bitField.getInt(56, 3, true); + } + + // |59-63 | 5 |Day (UTC) |day |u|1-31; 0 = N/A (default) + + }, { + key: 'day', + get: function get() { + var v = this._bitField.getInt(59, 5, true); + return v === 0 ? NaN : v; + } + + // |64-68 | 5 |Hour (UTC) |hour |u|0-23; 24 = N/A (default) + + }, { + key: 'hour', + get: function get() { + var v = this._bitField.getInt(64, 5, true); + return v >= 24 ? NaN : v; + } + + // |69-74 | 6 |Minute (UTC) |minute |u|0-59; 60 = N/A (default) + + }, { + key: 'minute', + get: function get() { + var v = this._bitField.getInt(69, 6, true); + return v >= 60 ? NaN : v; + } + }, { + key: 'airPressure', + get: function get() { + var v = this._bitField.getInt(124, 9, true); + if (v === 0) return 799; + if (v === 402) return 1201; + if (v >= 403) return NaN; + return 800 + v; + } + + // |133-143 | 11 |Air Temperature |air_temp |I4|Dry bulb temp, 0.1°C steps, -60.0 to +60.0°C (-1024=N/A, 601–1023 reserved) + + }, { + key: 'airTemperature', + get: function get() { + var v = this._bitField.getInt(133, 11, false); + if (v === -1024) return NaN; + return v / 10.0; + } + + // |144-150 | 7 |Avg 10-min wind speed |avg_wind_speed |u|0-125 knots; 127 = N/A (default) + + }, { + key: 'avgWindSpeed', + get: function get() { + var v = this._bitField.getInt(144, 7, true); + return v >= 127 ? NaN : v; + } + + // |151-157 | 7 |Avg 10-min gust speed|avg_gust_speed |u|0-125 knots; 127 = N/A (default) + + }, { + key: 'avgGustSpeed', + get: function get() { + var v = this._bitField.getInt(151, 7, true); + return v >= 127 ? NaN : v; + } + + // |158-166 | 9 |Avg 10-min wind direction|avg_wind_dir |u|0-359 degree; 360 = N/A (default) + + }, { + key: 'avgWindDirection', + get: function get() { + var v = this._bitField.getInt(158, 9, true); + return v >= 360 ? NaN : v; + } + }]); + + return Ais8MsgDac367Fid23; +}(_AisMessage3.default); + +exports.default = Ais8MsgDac367Fid23; diff --git a/lib/AisMessage.js b/lib/AisMessage.js index 47507e6..87c8ff1 100644 --- a/lib/AisMessage.js +++ b/lib/AisMessage.js @@ -602,7 +602,8 @@ var UNITS = { 'msgLinkageId': 'number', 'retransmitted': 'boolean', 'destinationMMSI': 'number', - 'sequence': 'number' + 'sequence': 'number', + 'version': 'number' }; var suppValuesValid = false; diff --git a/lib/AisParser.js b/lib/AisParser.js index 39a8846..a383f3d 100644 --- a/lib/AisParser.js +++ b/lib/AisParser.js @@ -44,6 +44,10 @@ var _Ais08Msg = require('./Ais08Msg'); var _Ais08Msg2 = _interopRequireDefault(_Ais08Msg); +var _Ais08MsgDac367Fid = require('./Ais08MsgDac367Fid23'); + +var _Ais08MsgDac367Fid2 = _interopRequireDefault(_Ais08MsgDac367Fid); + var _Ais08MsgDac200Fid = require('./Ais08MsgDac200Fid10'); var _Ais08MsgDac200Fid2 = _interopRequireDefault(_Ais08MsgDac200Fid); @@ -210,6 +214,8 @@ var AisParser = function () { if (sentence.dac == 200 && sentence.fid == 10) { return new _Ais08MsgDac200Fid2.default(aisType, bitField, part[4]); + } else if (sentence.dac == 367 && sentence.fid == 23) { + return new _Ais08MsgDac367Fid2.default(aisType, bitField, part[4]); } else if (sentence.dac == 1 && sentence.fid == 21) { return new _Ais08MsgDac1Fid2.default(aisType, bitField, part[4]); } else if (sentence.dac == 1 && sentence.fid == 29) { diff --git a/src/Ais08MsgDac367Fid23.js b/src/Ais08MsgDac367Fid23.js new file mode 100644 index 0000000..64463c5 --- /dev/null +++ b/src/Ais08MsgDac367Fid23.js @@ -0,0 +1,181 @@ +// @flow + +/* + * AisParser: A parser for NMEA0183 AIS messages. + * Copyright (C) 2025 Davide Gessa . + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the Apache License Version 2.0 as published by + * Apache Software foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the Apache License Version 2.0 + * along with this program. If not, see . + */ + +import AisBitField from './AisBitField'; +import AisMessage from './AisMessage'; +import type { SuppValues } from './AisMessage'; + +const MOD_NAME = 'Ais8MsgDac367Fid23'; + +const SUPPORTED_FIELDS = [ + 'aisType', + 'channel', + 'repeatInd', + 'mmsi', + 'dac', + 'fid', + 'version', + 'utcDay', + 'utcHour', + 'utcMinute', + 'longitude', + 'latitude', + 'airPressure', + 'airTemperature', + 'avgWindSpeed', + 'avgGustSpeed', + 'avgWindDirection', +]; + +let suppValuesValid = false; +let suppValues: SuppValues = {}; + +/* +|============================================================================== +|Field |Len |Description |Member |T|Units +|0-5 | 6 |Message Type |type |u|Constant: 14 +|6-7 | 2 |Repeat Indicator |repeat |u|Message repeat count +|8-37 | 30 |MMSI |mmsi |u|9 decimal digits +|38-39 | 2 |spare | |u|not used +|40-49 | 10 |Designated area code |dac |u| +|50-55 | 6 |Function identifier |fid |u| +|56-58 | 3 |Version |version |u| 0=test, 1-7=version +|59-63 | 5 |Day (UTC) |day |u|1-31; 0 = N/A (default) +|64-68 | 5 |Hour (UTC) |hour |u|0-23; 24 = N/A (default) +|69-74 | 6 |Minute (UTC) |minute |u|0-59; 60 = N/A (default) +|75-99 | 25 |Longitude |lon |I4| Long in 1/1000 min, +-180 deg as per 2's complement (e => +, w => -, 181 not available) +|100-123 | 24 |Latitude |lat |I4| Lat in 1/1000 min, +-90 deg as per 2's complement (n => +, s => -, 91 not available) +|124-132 | 9 |Air Pressure |air_pressure |u |0=799 hPa/less, 1–401=800–1200 hPa, 402=1201+/N/A=511 +|133-143 | 11 |Air Temperature |air_temp |I4|Dry bulb temp, 0.1°C steps, -60.0 to +60.0°C (-1024=N/A, 601–1023 reserved) +|144-150 | 7 |Avg 10-min wind speed |avg_wind_speed |u|0-125 knots; 127 = N/A (default) +|151-157 | 7 |Avg 10-min gust speed|avg_gust_speed |u|0-125 knots; 127 = N/A (default) +|158-166 | 9 |Avg 10-min wind direction|avg_wind_dir |u|0-359 degree; 360 = N/A (default) +|167 | 1 |Spare | |u |Not used, set to zero +|============================================================================== +*/ +export default class Ais8MsgDac367Fid23 extends AisMessage { + constructor(aisType: number, bitField: AisBitField, channel: string) { + super(aisType, bitField, channel); + if (bitField.bits == 168) { + this._valid = 'VALID'; + } else { + this._valid = 'INVALID'; + this._errMsg = 'invalid bitcount for type 8 msg dac 1 fid 31:' + bitField.bits; + } + } + + get class(): string { + return 'A'; + } + + get supportedValues(): SuppValues { + if (!suppValuesValid) { + SUPPORTED_FIELDS.forEach((field) => { + let unit = AisMessage.getUnit(field); + if (unit) { + suppValues[field] = unit; + } else { + console.warn(MOD_NAME + 'field without unit encountered:' + field); + } + }); + suppValuesValid = true; + } + return suppValues; + } + + // |40-49 | 10 |Designated area code |dac |u| + get dac(): number { + return this._bitField.getInt(40, 10, true); + } + + // |50-55 | 6 |Function identifier |fid |u| + get fid(): number { + return this._bitField.getInt(50, 6, true); + } + + + + // |56-58 | 3 |Version |version |u| 0=test, 1-7=version + get version(): number { + return this._bitField.getInt(56, 3, true); + } + + // |59-63 | 5 |Day (UTC) |day |u|1-31; 0 = N/A (default) + get day(): number { + const v = this._bitField.getInt(59, 5, true); + return v === 0 ? NaN : v; + } + + // |64-68 | 5 |Hour (UTC) |hour |u|0-23; 24 = N/A (default) + get hour(): number { + const v = this._bitField.getInt(64, 5, true); + return v >= 24 ? NaN : v; + } + + // |69-74 | 6 |Minute (UTC) |minute |u|0-59; 60 = N/A (default) + get minute(): number { + const v = this._bitField.getInt(69, 6, true); + return v >= 60 ? NaN : v; + } + + // |75-99 | 25 |Longitude |lon |I4| Long in 1/1000 min, +-180 deg as per 2's complement (e => +, w => -, 181 not available) + _getRawLon(): number { + return this._bitField.getInt(75, 25, false); + } + + // |100-123 | 24 |Latitude |lat |I4| Lat in 1/1000 min, +-90 deg as per 2's complement (n => +, s => -, 91 not available) + _getRawLat(): number { + return this._bitField.getInt(100, 24, false); + } + + // |124-132 | 9 |Air Pressure |air_pressure |u |0=799 hPa/less, 1–401=800–1200 hPa, 402=1201+/N/A=511 + get airPressure(): number { + const v = this._bitField.getInt(124, 9, true); + if (v === 0) return 799; + if (v === 402) return 1201; + if (v >= 403) return NaN; + return 800 + v; + } + + // |133-143 | 11 |Air Temperature |air_temp |I4|Dry bulb temp, 0.1°C steps, -60.0 to +60.0°C (-1024=N/A, 601–1023 reserved) + get airTemperature(): number { + const v = this._bitField.getInt(133, 11, false); + if (v === -1024) return NaN; + return v / 10.0; + } + + // |144-150 | 7 |Avg 10-min wind speed |avg_wind_speed |u|0-125 knots; 127 = N/A (default) + get avgWindSpeed(): number { + const v = this._bitField.getInt(144, 7, true); + return v >= 127 ? NaN : v; + } + + // |151-157 | 7 |Avg 10-min gust speed|avg_gust_speed |u|0-125 knots; 127 = N/A (default) + get avgGustSpeed(): number { + const v = this._bitField.getInt(151, 7, true); + return v >= 127 ? NaN : v; + } + + // |158-166 | 9 |Avg 10-min wind direction|avg_wind_dir |u|0-359 degree; 360 = N/A (default) + get avgWindDirection(): number { + const v = this._bitField.getInt(158, 9, true); + return v >= 360 ? NaN : v; + } + +} \ No newline at end of file diff --git a/src/AisMessage.js b/src/AisMessage.js index 6a74d19..78c4281 100644 --- a/src/AisMessage.js +++ b/src/AisMessage.js @@ -606,7 +606,8 @@ const UNITS = { 'msgLinkageId': 'number', 'retransmitted': 'boolean', 'destinationMMSI': 'number', - 'sequence': 'number' + 'sequence': 'number', + 'version': 'number' } let suppValuesValid = false; diff --git a/src/AisParser.js b/src/AisParser.js index e73eb99..2048639 100644 --- a/src/AisParser.js +++ b/src/AisParser.js @@ -24,6 +24,7 @@ import AisCNBMsg from './AisCNBMsg'; import Ais04Msg from './Ais04Msg'; import Ais05Msg from './Ais05Msg'; import Ais08Msg from './Ais08Msg'; +import Ais08MsgDac367Fid23 from './Ais08MsgDac367Fid23'; import Ais08MsgDac200Fid10 from './Ais08MsgDac200Fid10'; import Ais08MsgDac1Fid21 from './Ais08MsgDac1Fid21'; import Ais08MsgDac1Fid29 from './Ais08MsgDac1Fid29'; @@ -183,6 +184,8 @@ class AisParser { if (sentence.dac == 200 && sentence.fid == 10) { return new Ais08MsgDac200Fid10(aisType, bitField, part[4]); + } else if (sentence.dac == 367 && sentence.fid == 23) { + return new Ais08MsgDac367Fid23(aisType, bitField, part[4]); } else if (sentence.dac == 1 && sentence.fid == 21) { return new Ais08MsgDac1Fid21(aisType, bitField, part[4]); } else if (sentence.dac == 1 && sentence.fid == 29) { diff --git a/src/__tests__/testHelper/AisBitfieldDataGenerator.js b/src/__tests__/testHelper/AisBitfieldDataGenerator.js index 9110833..499023a 100644 --- a/src/__tests__/testHelper/AisBitfieldDataGenerator.js +++ b/src/__tests__/testHelper/AisBitfieldDataGenerator.js @@ -65,11 +65,11 @@ const AIS_REAL_DATA: Array = [ channel: 'A', aisType: 8, valid: 'INVALID' - // }, { - // aisStr: '!AIVDM,2,2,0,B,QvUvmEEEOP@,2*64', - // channel: 'A', - // aisType: 8, - // valid: 'VALID' + }, { + aisStr: '!AIVDM,1,1,,A,85N7GVQKmi=r6?n1@d`dEeP`10iT,0*48', + channel: 'A', + aisType: 8, + valid: 'VALID' } ] From 948140326f11990d8cd3bbae251449d5159bd616 Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Wed, 19 Nov 2025 16:52:44 +0100 Subject: [PATCH 21/33] handle 367 - 24 --- lib/Ais08MsgDac367Fid24.js | 180 +++++++++++++++++++++++++++++++++++++ lib/AisParser.js | 6 ++ src/Ais08MsgDac367Fid24.js | 136 ++++++++++++++++++++++++++++ src/AisParser.js | 3 + 4 files changed, 325 insertions(+) create mode 100644 lib/Ais08MsgDac367Fid24.js create mode 100644 src/Ais08MsgDac367Fid24.js diff --git a/lib/Ais08MsgDac367Fid24.js b/lib/Ais08MsgDac367Fid24.js new file mode 100644 index 0000000..7040b9d --- /dev/null +++ b/lib/Ais08MsgDac367Fid24.js @@ -0,0 +1,180 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _AisBitField = require('./AisBitField'); + +var _AisBitField2 = _interopRequireDefault(_AisBitField); + +var _AisMessage2 = require('./AisMessage'); + +var _AisMessage3 = _interopRequireDefault(_AisMessage2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/* + * AisParser: A parser for NMEA0183 AIS messages. + * Copyright (C) 2025 Davide Gessa . + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the Apache License Version 2.0 as published by + * Apache Software foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the Apache License Version 2.0 + * along with this program. If not, see . + */ + +var MOD_NAME = 'Ais8MsgDac367Fid24'; + +var SUPPORTED_FIELDS = ['aisType', 'channel', 'repeatInd', 'mmsi', 'dac', 'fid', 'version', 'utcHour', 'utcMinute', 'longitude', 'latitude', 'airPressure']; + +var suppValuesValid = false; +var suppValues = {}; + +/* +|============================================================================== +|Field |Len |Description |Member |T|Units +|0-5 | 6 |Message Type |type |u|Constant: 14 +|6-7 | 2 |Repeat Indicator |repeat |u|Message repeat count +|8-37 | 30 |MMSI |mmsi |u|9 decimal digits +|38-39 | 2 |spare | |u|not used +|40-49 | 10 |Designated area code |dac |u| +|50-55 | 6 |Function identifier |fid |u| +|56-58 | 3 |Version |version |u| 0=test, 1-7=version +|59-63 | 5 |Hour (UTC) |hour |u|0-23; 24 = N/A (default) +|64-69 | 6 |Minute (UTC) |minute |u|0-59; 60 = N/A (default) +|70-94 | 25 |Longitude |lon |I4| Long in 1/1000 min, +-180 deg as per 2's complement (e => +, w => -, 181 not available) +|95-118 | 24 |Latitude |lat |I4| Lat in 1/1000 min, +-90 deg as per 2's complement (n => +, s => -, 91 not available) +|119-127 | 9 |Air Pressure |air_pressure |u |0=799 hPa/less, 1–401=800–1200 hPa, 402=1201+/N/A=511 +|============================================================================== +*/ + +var Ais8MsgDac367Fid24 = function (_AisMessage) { + _inherits(Ais8MsgDac367Fid24, _AisMessage); + + function Ais8MsgDac367Fid24(aisType, bitField, channel) { + _classCallCheck(this, Ais8MsgDac367Fid24); + + var _this = _possibleConstructorReturn(this, (Ais8MsgDac367Fid24.__proto__ || Object.getPrototypeOf(Ais8MsgDac367Fid24)).call(this, aisType, bitField, channel)); + + if (bitField.bits == 128) { + _this._valid = 'VALID'; + } else { + _this._valid = 'INVALID'; + _this._errMsg = 'invalid bitcount for type 8 msg dac 1 fid 31:' + bitField.bits; + } + return _this; + } + + _createClass(Ais8MsgDac367Fid24, [{ + key: '_getRawLon', + + + // |70-94 | 25 |Longitude |lon |I4| Long in 1/1000 min, +-180 deg as per 2's complement (e => +, w => -, 181 not available) + value: function _getRawLon() { + return this._bitField.getInt(70, 25, false); + } + + // |95-118 | 24 |Latitude |lat |I4| Lat in 1/1000 min, +-90 deg as per 2's complement (n => +, s => -, 91 not available) + + }, { + key: '_getRawLat', + value: function _getRawLat() { + return this._bitField.getInt(95, 24, false); + } + + // |119-127 | 9 |Air Pressure |air_pressure |u |0=799 hPa/less, 1–401=800–1200 hPa, 402=1201+/N/A=511 + + }, { + key: 'class', + get: function get() { + return 'A'; + } + }, { + key: 'supportedValues', + get: function get() { + if (!suppValuesValid) { + SUPPORTED_FIELDS.forEach(function (field) { + var unit = _AisMessage3.default.getUnit(field); + if (unit) { + suppValues[field] = unit; + } else { + console.warn(MOD_NAME + 'field without unit encountered:' + field); + } + }); + suppValuesValid = true; + } + return suppValues; + } + + // |40-49 | 10 |Designated area code |dac |u| + + }, { + key: 'dac', + get: function get() { + return this._bitField.getInt(40, 10, true); + } + + // |50-55 | 6 |Function identifier |fid |u| + + }, { + key: 'fid', + get: function get() { + return this._bitField.getInt(50, 6, true); + } + + // |56-58 | 3 |Version |version |u| 0=test, 1-7=version + + }, { + key: 'version', + get: function get() { + return this._bitField.getInt(56, 3, true); + } + + // |59-63 | 5 |Hour (UTC) |hour |u|0-23; 24 = N/A (default) + + }, { + key: 'hour', + get: function get() { + var v = this._bitField.getInt(59, 5, true); + return v >= 24 ? NaN : v; + } + + // |64-69 | 6 |Minute (UTC) |minute |u|0-59; 60 = N/A (default) + + }, { + key: 'minute', + get: function get() { + var v = this._bitField.getInt(64, 6, true); + return v >= 60 ? NaN : v; + } + }, { + key: 'airPressure', + get: function get() { + var v = this._bitField.getInt(119, 9, true); + if (v === 0) return 799; + if (v === 402) return 1201; + if (v >= 403) return NaN; + return 800 + v; + } + }]); + + return Ais8MsgDac367Fid24; +}(_AisMessage3.default); + +exports.default = Ais8MsgDac367Fid24; diff --git a/lib/AisParser.js b/lib/AisParser.js index a383f3d..3f10096 100644 --- a/lib/AisParser.js +++ b/lib/AisParser.js @@ -48,6 +48,10 @@ var _Ais08MsgDac367Fid = require('./Ais08MsgDac367Fid23'); var _Ais08MsgDac367Fid2 = _interopRequireDefault(_Ais08MsgDac367Fid); +var _Ais08MsgDac367Fid3 = require('./Ais08MsgDac367Fid24'); + +var _Ais08MsgDac367Fid4 = _interopRequireDefault(_Ais08MsgDac367Fid3); + var _Ais08MsgDac200Fid = require('./Ais08MsgDac200Fid10'); var _Ais08MsgDac200Fid2 = _interopRequireDefault(_Ais08MsgDac200Fid); @@ -216,6 +220,8 @@ var AisParser = function () { return new _Ais08MsgDac200Fid2.default(aisType, bitField, part[4]); } else if (sentence.dac == 367 && sentence.fid == 23) { return new _Ais08MsgDac367Fid2.default(aisType, bitField, part[4]); + } else if (sentence.dac == 367 && sentence.fid == 24) { + return new _Ais08MsgDac367Fid4.default(aisType, bitField, part[4]); } else if (sentence.dac == 1 && sentence.fid == 21) { return new _Ais08MsgDac1Fid2.default(aisType, bitField, part[4]); } else if (sentence.dac == 1 && sentence.fid == 29) { diff --git a/src/Ais08MsgDac367Fid24.js b/src/Ais08MsgDac367Fid24.js new file mode 100644 index 0000000..c9049f7 --- /dev/null +++ b/src/Ais08MsgDac367Fid24.js @@ -0,0 +1,136 @@ +// @flow + +/* + * AisParser: A parser for NMEA0183 AIS messages. + * Copyright (C) 2025 Davide Gessa . + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the Apache License Version 2.0 as published by + * Apache Software foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the Apache License Version 2.0 + * along with this program. If not, see . + */ + +import AisBitField from './AisBitField'; +import AisMessage from './AisMessage'; +import type { SuppValues } from './AisMessage'; + +const MOD_NAME = 'Ais8MsgDac367Fid24'; + +const SUPPORTED_FIELDS = [ + 'aisType', + 'channel', + 'repeatInd', + 'mmsi', + 'dac', + 'fid', + 'version', + 'utcHour', + 'utcMinute', + 'longitude', + 'latitude', + 'airPressure', +]; + +let suppValuesValid = false; +let suppValues: SuppValues = {}; + +/* +|============================================================================== +|Field |Len |Description |Member |T|Units +|0-5 | 6 |Message Type |type |u|Constant: 14 +|6-7 | 2 |Repeat Indicator |repeat |u|Message repeat count +|8-37 | 30 |MMSI |mmsi |u|9 decimal digits +|38-39 | 2 |spare | |u|not used +|40-49 | 10 |Designated area code |dac |u| +|50-55 | 6 |Function identifier |fid |u| +|56-58 | 3 |Version |version |u| 0=test, 1-7=version +|59-63 | 5 |Hour (UTC) |hour |u|0-23; 24 = N/A (default) +|64-69 | 6 |Minute (UTC) |minute |u|0-59; 60 = N/A (default) +|70-94 | 25 |Longitude |lon |I4| Long in 1/1000 min, +-180 deg as per 2's complement (e => +, w => -, 181 not available) +|95-118 | 24 |Latitude |lat |I4| Lat in 1/1000 min, +-90 deg as per 2's complement (n => +, s => -, 91 not available) +|119-127 | 9 |Air Pressure |air_pressure |u |0=799 hPa/less, 1–401=800–1200 hPa, 402=1201+/N/A=511 +|============================================================================== +*/ +export default class Ais8MsgDac367Fid24 extends AisMessage { + constructor(aisType: number, bitField: AisBitField, channel: string) { + super(aisType, bitField, channel); + if (bitField.bits == 128) { + this._valid = 'VALID'; + } else { + this._valid = 'INVALID'; + this._errMsg = 'invalid bitcount for type 8 msg dac 1 fid 31:' + bitField.bits; + } + } + + get class(): string { + return 'A'; + } + + get supportedValues(): SuppValues { + if (!suppValuesValid) { + SUPPORTED_FIELDS.forEach((field) => { + let unit = AisMessage.getUnit(field); + if (unit) { + suppValues[field] = unit; + } else { + console.warn(MOD_NAME + 'field without unit encountered:' + field); + } + }); + suppValuesValid = true; + } + return suppValues; + } + + // |40-49 | 10 |Designated area code |dac |u| + get dac(): number { + return this._bitField.getInt(40, 10, true); + } + + // |50-55 | 6 |Function identifier |fid |u| + get fid(): number { + return this._bitField.getInt(50, 6, true); + } + + // |56-58 | 3 |Version |version |u| 0=test, 1-7=version + get version(): number { + return this._bitField.getInt(56, 3, true); + } + + // |59-63 | 5 |Hour (UTC) |hour |u|0-23; 24 = N/A (default) + get hour(): number { + const v = this._bitField.getInt(59, 5, true); + return v >= 24 ? NaN : v; + } + + // |64-69 | 6 |Minute (UTC) |minute |u|0-59; 60 = N/A (default) + get minute(): number { + const v = this._bitField.getInt(64, 6, true); + return v >= 60 ? NaN : v; + } + + // |70-94 | 25 |Longitude |lon |I4| Long in 1/1000 min, +-180 deg as per 2's complement (e => +, w => -, 181 not available) + _getRawLon(): number { + return this._bitField.getInt(70, 25, false); + } + + // |95-118 | 24 |Latitude |lat |I4| Lat in 1/1000 min, +-90 deg as per 2's complement (n => +, s => -, 91 not available) + _getRawLat(): number { + return this._bitField.getInt(95, 24, false); + } + + // |119-127 | 9 |Air Pressure |air_pressure |u |0=799 hPa/less, 1–401=800–1200 hPa, 402=1201+/N/A=511 + get airPressure(): number { + const v = this._bitField.getInt(119, 9, true); + if (v === 0) return 799; + if (v === 402) return 1201; + if (v >= 403) return NaN; + return 800 + v; + } +} \ No newline at end of file diff --git a/src/AisParser.js b/src/AisParser.js index 2048639..cee6ee2 100644 --- a/src/AisParser.js +++ b/src/AisParser.js @@ -25,6 +25,7 @@ import Ais04Msg from './Ais04Msg'; import Ais05Msg from './Ais05Msg'; import Ais08Msg from './Ais08Msg'; import Ais08MsgDac367Fid23 from './Ais08MsgDac367Fid23'; +import Ais08MsgDac367Fid24 from './Ais08MsgDac367Fid24'; import Ais08MsgDac200Fid10 from './Ais08MsgDac200Fid10'; import Ais08MsgDac1Fid21 from './Ais08MsgDac1Fid21'; import Ais08MsgDac1Fid29 from './Ais08MsgDac1Fid29'; @@ -186,6 +187,8 @@ class AisParser { return new Ais08MsgDac200Fid10(aisType, bitField, part[4]); } else if (sentence.dac == 367 && sentence.fid == 23) { return new Ais08MsgDac367Fid23(aisType, bitField, part[4]); + } else if (sentence.dac == 367 && sentence.fid == 24) { + return new Ais08MsgDac367Fid24(aisType, bitField, part[4]); } else if (sentence.dac == 1 && sentence.fid == 21) { return new Ais08MsgDac1Fid21(aisType, bitField, part[4]); } else if (sentence.dac == 1 && sentence.fid == 29) { From 5350d5de78fb5b75ab57fc504316190e3b9bcbff Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Wed, 19 Nov 2025 17:08:53 +0100 Subject: [PATCH 22/33] fix coordinates in weather messages --- lib/Ais08MsgDac1Fid21.js | 4 ++-- lib/Ais08MsgDac367Fid23.js | 4 ++-- lib/Ais08MsgDac367Fid24.js | 4 ++-- src/Ais08MsgDac1Fid21.js | 4 ++-- src/Ais08MsgDac367Fid23.js | 4 ++-- src/Ais08MsgDac367Fid24.js | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/lib/Ais08MsgDac1Fid21.js b/lib/Ais08MsgDac1Fid21.js index 726066e..5ab3e2e 100644 --- a/lib/Ais08MsgDac1Fid21.js +++ b/lib/Ais08MsgDac1Fid21.js @@ -107,7 +107,7 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { // |177-201 | 25 |Longitude |lon |I4| Long in 1/1000 min, 2's complement value: function _getRawLon() { - return this._bitField.getInt(177, 25, false); + return this._bitField.getInt(177, 25, false) * 10; } // |202-225 | 24 |Latitude |lat |I4| Lat in 1/1000 min, 2's complement @@ -115,7 +115,7 @@ var Ais8MsgDac1Fid31 = function (_AisMessage) { }, { key: '_getRawLat', value: function _getRawLat() { - return this._bitField.getInt(202, 24, false); + return this._bitField.getInt(202, 24, false) * 10; } // |226-230 | 5 |Day (UTC) |day |u|1-31; 0 = N/A diff --git a/lib/Ais08MsgDac367Fid23.js b/lib/Ais08MsgDac367Fid23.js index 736efc6..e87bdd6 100644 --- a/lib/Ais08MsgDac367Fid23.js +++ b/lib/Ais08MsgDac367Fid23.js @@ -93,7 +93,7 @@ var Ais8MsgDac367Fid23 = function (_AisMessage) { // |75-99 | 25 |Longitude |lon |I4| Long in 1/1000 min, +-180 deg as per 2's complement (e => +, w => -, 181 not available) value: function _getRawLon() { - return this._bitField.getInt(75, 25, false); + return this._bitField.getInt(75, 25, false) * 10; } // |100-123 | 24 |Latitude |lat |I4| Lat in 1/1000 min, +-90 deg as per 2's complement (n => +, s => -, 91 not available) @@ -101,7 +101,7 @@ var Ais8MsgDac367Fid23 = function (_AisMessage) { }, { key: '_getRawLat', value: function _getRawLat() { - return this._bitField.getInt(100, 24, false); + return this._bitField.getInt(100, 24, false) * 10; } // |124-132 | 9 |Air Pressure |air_pressure |u |0=799 hPa/less, 1–401=800–1200 hPa, 402=1201+/N/A=511 diff --git a/lib/Ais08MsgDac367Fid24.js b/lib/Ais08MsgDac367Fid24.js index 7040b9d..085eecb 100644 --- a/lib/Ais08MsgDac367Fid24.js +++ b/lib/Ais08MsgDac367Fid24.js @@ -87,7 +87,7 @@ var Ais8MsgDac367Fid24 = function (_AisMessage) { // |70-94 | 25 |Longitude |lon |I4| Long in 1/1000 min, +-180 deg as per 2's complement (e => +, w => -, 181 not available) value: function _getRawLon() { - return this._bitField.getInt(70, 25, false); + return this._bitField.getInt(70, 25, false) * 10; } // |95-118 | 24 |Latitude |lat |I4| Lat in 1/1000 min, +-90 deg as per 2's complement (n => +, s => -, 91 not available) @@ -95,7 +95,7 @@ var Ais8MsgDac367Fid24 = function (_AisMessage) { }, { key: '_getRawLat', value: function _getRawLat() { - return this._bitField.getInt(95, 24, false); + return this._bitField.getInt(95, 24, false) * 10; } // |119-127 | 9 |Air Pressure |air_pressure |u |0=799 hPa/less, 1–401=800–1200 hPa, 402=1201+/N/A=511 diff --git a/src/Ais08MsgDac1Fid21.js b/src/Ais08MsgDac1Fid21.js index de90a78..d4db9c6 100644 --- a/src/Ais08MsgDac1Fid21.js +++ b/src/Ais08MsgDac1Fid21.js @@ -147,12 +147,12 @@ export default class Ais8MsgDac1Fid31 extends AisMessage { // |177-201 | 25 |Longitude |lon |I4| Long in 1/1000 min, 2's complement _getRawLon(): number { - return this._bitField.getInt(177, 25, false); + return this._bitField.getInt(177, 25, false) * 10; } // |202-225 | 24 |Latitude |lat |I4| Lat in 1/1000 min, 2's complement _getRawLat(): number { - return this._bitField.getInt(202, 24, false); + return this._bitField.getInt(202, 24, false) * 10; } // |226-230 | 5 |Day (UTC) |day |u|1-31; 0 = N/A diff --git a/src/Ais08MsgDac367Fid23.js b/src/Ais08MsgDac367Fid23.js index 64463c5..8351e0c 100644 --- a/src/Ais08MsgDac367Fid23.js +++ b/src/Ais08MsgDac367Fid23.js @@ -136,12 +136,12 @@ export default class Ais8MsgDac367Fid23 extends AisMessage { // |75-99 | 25 |Longitude |lon |I4| Long in 1/1000 min, +-180 deg as per 2's complement (e => +, w => -, 181 not available) _getRawLon(): number { - return this._bitField.getInt(75, 25, false); + return this._bitField.getInt(75, 25, false) * 10; } // |100-123 | 24 |Latitude |lat |I4| Lat in 1/1000 min, +-90 deg as per 2's complement (n => +, s => -, 91 not available) _getRawLat(): number { - return this._bitField.getInt(100, 24, false); + return this._bitField.getInt(100, 24, false) * 10; } // |124-132 | 9 |Air Pressure |air_pressure |u |0=799 hPa/less, 1–401=800–1200 hPa, 402=1201+/N/A=511 diff --git a/src/Ais08MsgDac367Fid24.js b/src/Ais08MsgDac367Fid24.js index c9049f7..579abd7 100644 --- a/src/Ais08MsgDac367Fid24.js +++ b/src/Ais08MsgDac367Fid24.js @@ -117,12 +117,12 @@ export default class Ais8MsgDac367Fid24 extends AisMessage { // |70-94 | 25 |Longitude |lon |I4| Long in 1/1000 min, +-180 deg as per 2's complement (e => +, w => -, 181 not available) _getRawLon(): number { - return this._bitField.getInt(70, 25, false); + return this._bitField.getInt(70, 25, false) * 10; } // |95-118 | 24 |Latitude |lat |I4| Lat in 1/1000 min, +-90 deg as per 2's complement (n => +, s => -, 91 not available) _getRawLat(): number { - return this._bitField.getInt(95, 24, false); + return this._bitField.getInt(95, 24, false) * 10; } // |119-127 | 9 |Air Pressure |air_pressure |u |0=799 hPa/less, 1–401=800–1200 hPa, 402=1201+/N/A=511 From 89b9d757c8c84ae4dddf53ce94a0e21d1bd09575 Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Tue, 20 Jan 2026 13:02:02 +0100 Subject: [PATCH 23/33] sar aicraft position report --- src/Ais09Msg.js | 203 ++++++++++++++++++++++++++++++++++++++++++++++ src/AisMessage.js | 9 +- src/AisParser.js | 5 +- 3 files changed, 215 insertions(+), 2 deletions(-) create mode 100644 src/Ais09Msg.js diff --git a/src/Ais09Msg.js b/src/Ais09Msg.js new file mode 100644 index 0000000..cdfdd10 --- /dev/null +++ b/src/Ais09Msg.js @@ -0,0 +1,203 @@ +// @flow + +/* + * AisParser: A parser for NMEA0183 AIS messages. + * Copyright (C) 2026 Davide Gessa . + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the Apache License Version 2.0 as published by + * Apache Software foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the Apache License Version 2.0 + * along with this program. If not, see . + */ + +import AisBitField from './AisBitField'; +import AisMessage from './AisMessage'; +import type {SuppValues} from './AisMessage'; + +const MOD_NAME = 'Ais09Msg'; + +/* +|============================================================================== +|Field |Len |Description |Member |T|Units +|0-5 | 6 |Message Type |type |u|Constant: 9 +|6-7 | 2 |Repeat Indicator |repeat |u|0-3 +|8-37 |30 |MMSI |mmsi |u|9 decimal digits +|38-49 |12 |Altitude (GNSS) |altitude |u|0-4094m, 4095=N/A +|50-59 |10 |Speed Over Ground |speed |u|0-1022 knots, 1023=N/A +|60-60 | 1 |Position Accuracy |accuracy |b|1=high (<=10m) +|61-88 |28 |Longitude |lon |I4|Minutes/10000 +|89-115 |27 |Latitude |lat |I4|Minutes/10000 +|116-127 |12 |Course Over Ground |course |U1|0.1 degrees +|128-133 | 6 |Time Stamp |second |u|UTC seconds +|134-134 | 1 |Altitude Sensor |altitudeSensor |u|0=GNSS, 1=barometric +|135-141 | 7 |Spare | |x|Not used +|142-142 | 1 |DTE |dte |b|Data terminal ready +|143-145 | 3 |Spare | |x|Not used +|146-146 | 1 |Assigned Mode Flag |assigned |b|0=autonomous, 1=assigned +|147-147 | 1 |RAIM Flag |raim |b|RAIM in use +|148-148 | 1 |Comm State Selector |commStateSelector|u|0=SOTDMA, 1=ITDMA +|149-167 |19 |Communication State |commState |u|SOTDMA/ITDMA state +|============================================================================== +Total: 168 bits +*/ + +const SUPPORTED_FIELDS = [ + 'aisType', + 'channel', + 'repeatInd', + 'mmsi', + 'midCountry', + 'midCountryIso', + 'mmsiType', + 'altitude', + 'altitudeStatus', + 'sogStatus', + 'sog', + 'posAccuracy', + 'longitude', + 'latitude', + 'cog', + 'utcTsSec', + 'utcTsStatus', + 'altitudeSensor', + 'dte', + 'assignedMode', + 'raim', +]; + +let suppValuesValid = false; +let suppValues : SuppValues = {}; + +export type AltitudeStatus = 'VALID' | 'HIGH' | 'NA'; + +export default class Ais09Msg extends AisMessage { + constructor(aisType : number, bitField : AisBitField, channel : string) { + super(aisType, bitField, channel); + if(bitField.bits >= 168) { + this._valid = 'VALID'; + } else { + this._valid = 'INVALID'; + this._errMsg = 'invalid bitcount for type 9 msg:' + bitField.bits; + } + } + + get supportedValues() : SuppValues { + if(!suppValuesValid) { + SUPPORTED_FIELDS.forEach((field) => { + let unit = AisMessage.getUnit(field); + if(unit) { + suppValues[field] = unit; + } else { + console.warn(MOD_NAME + ' field without unit encountered:' + field); + } + }); + suppValuesValid = true; + } + return suppValues; + } + + get class() : string { + return 'SAR'; + } + + // Altitude: 12 bits at position 38 + // 0-4094 = altitude in meters + // 4095 = not available + _getRawAltitude() : number { + return this._bitField.getInt(38, 12, true); + } + + get altitudeStatus() : AltitudeStatus { + let alt = this._getRawAltitude(); + if (alt === 4095) return 'NA'; + if (alt === 4094) return 'HIGH'; + return 'VALID'; + } + + get altitude() : number { + let alt = this._getRawAltitude(); + if (alt >= 4094) return NaN; + return alt; + } + + // SOG: 10 bits at position 50 + // 0-1022 = speed in knots (no decimal) + // 1023 = not available + _getRawSog() : number { + return this._bitField.getInt(50, 10, true); + } + + get sog() : number { + let sog = this._getRawSog(); + if (sog >= 1023) return NaN; + return sog; + } + + // Position Accuracy: 1 bit at position 60 + get posAccuracy() : boolean { + return this._bitField.getInt(60, 1, true) === 1; + } + + // Longitude: 28 bits at position 61 + _getRawLon() : number { + return this._bitField.getInt(61, 28, false); + } + + // Latitude: 27 bits at position 89 + _getRawLat() : number { + return this._bitField.getInt(89, 27, false); + } + + // COG: 12 bits at position 116 + // 0-3599 = 0.0-359.9 degrees + // 3600 = not available + _getRawCog() : number { + return this._bitField.getInt(116, 12, true); + } + + // UTC Timestamp: 6 bits at position 128 + _getUtcSec() : number { + return this._bitField.getInt(128, 6, true); + } + + // Altitude Sensor: 1 bit at position 134 + // 0 = GNSS, 1 = barometric + get altitudeSensor() : number { + return this._bitField.getInt(134, 1, true); + } + + // DTE: 1 bit at position 142 + // 0 = data terminal available, 1 = not available + get dte() : boolean { + return this._bitField.getInt(142, 1, true) === 0; + } + + // Assigned Mode Flag: 1 bit at position 146 + // 0 = autonomous/continuous mode, 1 = assigned mode + get assignedMode() : boolean { + return this._bitField.getInt(146, 1, true) === 1; + } + + // RAIM Flag: 1 bit at position 147 + get raim() : boolean { + return this._bitField.getInt(147, 1, true) === 1; + } + + // Communication State Selector: 1 bit at position 148 + // 0 = SOTDMA, 1 = ITDMA + get commStateSelector() : number { + return this._bitField.getInt(148, 1, true); + } + + // Communication State: 19 bits at position 149 + get commState() : number { + return this._bitField.getInt(149, 19, true); + } +} diff --git a/src/AisMessage.js b/src/AisMessage.js index 78c4281..07a7cc3 100644 --- a/src/AisMessage.js +++ b/src/AisMessage.js @@ -3,6 +3,7 @@ /* * AisParser: A parser for NMEA0183 AIS messages. * Copyright (C) 2017 Thomas Runte . + * Copyright (C) 2026 Davide Gssa . * * This program is free software: you can redistribute it and/or modify * it under the terms of the Apache License Version 2.0 as published by @@ -607,7 +608,13 @@ const UNITS = { 'retransmitted': 'boolean', 'destinationMMSI': 'number', 'sequence': 'number', - 'version': 'number' + 'version': 'number', + 'altitude': 'm', + 'altitudeStatus': 'string', + 'altitudeSensor': 'number', + 'dte': 'boolean', + 'assignedMode': 'boolean', + 'raim': 'boolean' } let suppValuesValid = false; diff --git a/src/AisParser.js b/src/AisParser.js index cee6ee2..810e2d9 100644 --- a/src/AisParser.js +++ b/src/AisParser.js @@ -3,7 +3,7 @@ /* * AisParser: A parser for NMEA0183 AIS messages. * Copyright (C) 2017-2024 Thomas Runte . - * Copyright (C) 2025 Davide Gessa . + * Copyright (C) 2025-2026 Davide Gessa . * * This program is free software: you can redistribute it and/or modify * it under the terms of the Apache License Version 2.0 as published by @@ -23,6 +23,7 @@ import AisMessage from './AisMessage'; import AisCNBMsg from './AisCNBMsg'; import Ais04Msg from './Ais04Msg'; import Ais05Msg from './Ais05Msg'; +import Ais09Msg from './Ais09Msg'; import Ais08Msg from './Ais08Msg'; import Ais08MsgDac367Fid23 from './Ais08MsgDac367Fid23'; import Ais08MsgDac367Fid24 from './Ais08MsgDac367Fid24'; @@ -174,6 +175,8 @@ class AisParser { return new Ais04Msg(aisType, bitField, part[4]); case 5: return new Ais05Msg(aisType, bitField, part[4]); + case 9: + return new Ais09Msg(aisType, bitField, part[4]); case 8: let sentence = new Ais08Msg(aisType, bitField, part[4]); From d80bb6307f392db910335619ea8c6925faddb863 Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Tue, 20 Jan 2026 17:02:58 +0100 Subject: [PATCH 24/33] compile flow --- lib/Ais09Msg.js | 253 ++++++++++++++++++++++++++++++++++++++++++++++ lib/AisMessage.js | 9 +- lib/AisParser.js | 8 +- 3 files changed, 268 insertions(+), 2 deletions(-) create mode 100644 lib/Ais09Msg.js diff --git a/lib/Ais09Msg.js b/lib/Ais09Msg.js new file mode 100644 index 0000000..a8885ec --- /dev/null +++ b/lib/Ais09Msg.js @@ -0,0 +1,253 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _AisBitField = require('./AisBitField'); + +var _AisBitField2 = _interopRequireDefault(_AisBitField); + +var _AisMessage2 = require('./AisMessage'); + +var _AisMessage3 = _interopRequireDefault(_AisMessage2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/* + * AisParser: A parser for NMEA0183 AIS messages. + * Copyright (C) 2026 Davide Gessa . + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the Apache License Version 2.0 as published by + * Apache Software foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the Apache License Version 2.0 + * along with this program. If not, see . + */ + +var MOD_NAME = 'Ais09Msg'; + +/* +|============================================================================== +|Field |Len |Description |Member |T|Units +|0-5 | 6 |Message Type |type |u|Constant: 9 +|6-7 | 2 |Repeat Indicator |repeat |u|0-3 +|8-37 |30 |MMSI |mmsi |u|9 decimal digits +|38-49 |12 |Altitude (GNSS) |altitude |u|0-4094m, 4095=N/A +|50-59 |10 |Speed Over Ground |speed |u|0-1022 knots, 1023=N/A +|60-60 | 1 |Position Accuracy |accuracy |b|1=high (<=10m) +|61-88 |28 |Longitude |lon |I4|Minutes/10000 +|89-115 |27 |Latitude |lat |I4|Minutes/10000 +|116-127 |12 |Course Over Ground |course |U1|0.1 degrees +|128-133 | 6 |Time Stamp |second |u|UTC seconds +|134-134 | 1 |Altitude Sensor |altitudeSensor |u|0=GNSS, 1=barometric +|135-141 | 7 |Spare | |x|Not used +|142-142 | 1 |DTE |dte |b|Data terminal ready +|143-145 | 3 |Spare | |x|Not used +|146-146 | 1 |Assigned Mode Flag |assigned |b|0=autonomous, 1=assigned +|147-147 | 1 |RAIM Flag |raim |b|RAIM in use +|148-148 | 1 |Comm State Selector |commStateSelector|u|0=SOTDMA, 1=ITDMA +|149-167 |19 |Communication State |commState |u|SOTDMA/ITDMA state +|============================================================================== +Total: 168 bits +*/ + +var SUPPORTED_FIELDS = ['aisType', 'channel', 'repeatInd', 'mmsi', 'midCountry', 'midCountryIso', 'mmsiType', 'altitude', 'altitudeStatus', 'sogStatus', 'sog', 'posAccuracy', 'longitude', 'latitude', 'cog', 'utcTsSec', 'utcTsStatus', 'altitudeSensor', 'dte', 'assignedMode', 'raim']; + +var suppValuesValid = false; +var suppValues = {}; + +var Ais09Msg = function (_AisMessage) { + _inherits(Ais09Msg, _AisMessage); + + function Ais09Msg(aisType, bitField, channel) { + _classCallCheck(this, Ais09Msg); + + var _this = _possibleConstructorReturn(this, (Ais09Msg.__proto__ || Object.getPrototypeOf(Ais09Msg)).call(this, aisType, bitField, channel)); + + if (bitField.bits >= 168) { + _this._valid = 'VALID'; + } else { + _this._valid = 'INVALID'; + _this._errMsg = 'invalid bitcount for type 9 msg:' + bitField.bits; + } + return _this; + } + + _createClass(Ais09Msg, [{ + key: '_getRawAltitude', + + + // Altitude: 12 bits at position 38 + // 0-4094 = altitude in meters + // 4095 = not available + value: function _getRawAltitude() { + return this._bitField.getInt(38, 12, true); + } + }, { + key: '_getRawSog', + + + // SOG: 10 bits at position 50 + // 0-1022 = speed in knots (no decimal) + // 1023 = not available + value: function _getRawSog() { + return this._bitField.getInt(50, 10, true); + } + }, { + key: '_getRawLon', + + + // Longitude: 28 bits at position 61 + value: function _getRawLon() { + return this._bitField.getInt(61, 28, false); + } + + // Latitude: 27 bits at position 89 + + }, { + key: '_getRawLat', + value: function _getRawLat() { + return this._bitField.getInt(89, 27, false); + } + + // COG: 12 bits at position 116 + // 0-3599 = 0.0-359.9 degrees + // 3600 = not available + + }, { + key: '_getRawCog', + value: function _getRawCog() { + return this._bitField.getInt(116, 12, true); + } + + // UTC Timestamp: 6 bits at position 128 + + }, { + key: '_getUtcSec', + value: function _getUtcSec() { + return this._bitField.getInt(128, 6, true); + } + + // Altitude Sensor: 1 bit at position 134 + // 0 = GNSS, 1 = barometric + + }, { + key: 'supportedValues', + get: function get() { + if (!suppValuesValid) { + SUPPORTED_FIELDS.forEach(function (field) { + var unit = _AisMessage3.default.getUnit(field); + if (unit) { + suppValues[field] = unit; + } else { + console.warn(MOD_NAME + ' field without unit encountered:' + field); + } + }); + suppValuesValid = true; + } + return suppValues; + } + }, { + key: 'class', + get: function get() { + return 'SAR'; + } + }, { + key: 'altitudeStatus', + get: function get() { + var alt = this._getRawAltitude(); + if (alt === 4095) return 'NA'; + if (alt === 4094) return 'HIGH'; + return 'VALID'; + } + }, { + key: 'altitude', + get: function get() { + var alt = this._getRawAltitude(); + if (alt >= 4094) return NaN; + return alt; + } + }, { + key: 'sog', + get: function get() { + var sog = this._getRawSog(); + if (sog >= 1023) return NaN; + return sog; + } + + // Position Accuracy: 1 bit at position 60 + + }, { + key: 'posAccuracy', + get: function get() { + return this._bitField.getInt(60, 1, true) === 1; + } + }, { + key: 'altitudeSensor', + get: function get() { + return this._bitField.getInt(134, 1, true); + } + + // DTE: 1 bit at position 142 + // 0 = data terminal available, 1 = not available + + }, { + key: 'dte', + get: function get() { + return this._bitField.getInt(142, 1, true) === 0; + } + + // Assigned Mode Flag: 1 bit at position 146 + // 0 = autonomous/continuous mode, 1 = assigned mode + + }, { + key: 'assignedMode', + get: function get() { + return this._bitField.getInt(146, 1, true) === 1; + } + + // RAIM Flag: 1 bit at position 147 + + }, { + key: 'raim', + get: function get() { + return this._bitField.getInt(147, 1, true) === 1; + } + + // Communication State Selector: 1 bit at position 148 + // 0 = SOTDMA, 1 = ITDMA + + }, { + key: 'commStateSelector', + get: function get() { + return this._bitField.getInt(148, 1, true); + } + + // Communication State: 19 bits at position 149 + + }, { + key: 'commState', + get: function get() { + return this._bitField.getInt(149, 19, true); + } + }]); + + return Ais09Msg; +}(_AisMessage3.default); + +exports.default = Ais09Msg; diff --git a/lib/AisMessage.js b/lib/AisMessage.js index 87c8ff1..9ba8649 100644 --- a/lib/AisMessage.js +++ b/lib/AisMessage.js @@ -9,6 +9,7 @@ var _createClass = function () { function defineProperties(target, props) { for /* * AisParser: A parser for NMEA0183 AIS messages. * Copyright (C) 2017 Thomas Runte . + * Copyright (C) 2026 Davide Gssa . * * This program is free software: you can redistribute it and/or modify * it under the terms of the Apache License Version 2.0 as published by @@ -603,7 +604,13 @@ var UNITS = { 'retransmitted': 'boolean', 'destinationMMSI': 'number', 'sequence': 'number', - 'version': 'number' + 'version': 'number', + 'altitude': 'm', + 'altitudeStatus': 'string', + 'altitudeSensor': 'number', + 'dte': 'boolean', + 'assignedMode': 'boolean', + 'raim': 'boolean' }; var suppValuesValid = false; diff --git a/lib/AisParser.js b/lib/AisParser.js index 3f10096..a4492e4 100644 --- a/lib/AisParser.js +++ b/lib/AisParser.js @@ -5,7 +5,7 @@ var _createClass = function () { function defineProperties(target, props) { for /* * AisParser: A parser for NMEA0183 AIS messages. * Copyright (C) 2017-2024 Thomas Runte . - * Copyright (C) 2025 Davide Gessa . + * Copyright (C) 2025-2026 Davide Gessa . * * This program is free software: you can redistribute it and/or modify * it under the terms of the Apache License Version 2.0 as published by @@ -40,6 +40,10 @@ var _Ais05Msg = require('./Ais05Msg'); var _Ais05Msg2 = _interopRequireDefault(_Ais05Msg); +var _Ais09Msg = require('./Ais09Msg'); + +var _Ais09Msg2 = _interopRequireDefault(_Ais09Msg); + var _Ais08Msg = require('./Ais08Msg'); var _Ais08Msg2 = _interopRequireDefault(_Ais08Msg); @@ -207,6 +211,8 @@ var AisParser = function () { return new _Ais04Msg2.default(aisType, bitField, part[4]); case 5: return new _Ais05Msg2.default(aisType, bitField, part[4]); + case 9: + return new _Ais09Msg2.default(aisType, bitField, part[4]); case 8: var sentence = new _Ais08Msg2.default(aisType, bitField, part[4]); From 81c9be634d841a98d78f8e47e1dba5e875074143 Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Tue, 20 Jan 2026 17:06:16 +0100 Subject: [PATCH 25/33] add missing fields in SupportedValues --- SupportedValues.md | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/SupportedValues.md b/SupportedValues.md index 7e9adbe..b206d34 100644 --- a/SupportedValues.md +++ b/SupportedValues.md @@ -3,7 +3,7 @@ | Parameter | Type | Description |Values | Messages | |:----------|:-----|:---------------------|:-----------|:---------| |valid|string|Validity of the result|VALID, INVALID, UNSUPPORTED, INCOMPLETE|all| -|aisType|number|The message number of the AIS Message| 1-5, 18, 19, 21, or 24|all| +|aisType|number|The message number of the AIS Message| 1-5, 9, 18, 19, 21, or 24|all| |channel|string|The VHF channel the message was Transmitted on |A,B or empty |all| |repeatInd|number|Wether or not / how this message should be rebroadcasted | 0,1,2,3 |all| |mmsi|number|Maritime Mobile Service Identity |9 digit number|all| @@ -11,9 +11,9 @@ |midCountryIso|string|ISO String of the Country extracted from the MMSI|The ISO String or empty|all| |mmsiType|string|The Type of Target extracted from the MMSI|Target type or empty|all| |class |string|The Class of AIS Device | A, B empty | all | -|latitude| deg |The latitude of the Sender | -90-90 |1, 2, 3, 4, 18, 19| -|longitude| deg |The longitude of the Sender | -180-180 |1, 2, 3, 4, 18, 19| -|posAccuracy|boolean|Position Accuracy, true = DGPS Quality < 10m, false >10m|true,false|1, 2, 3, 4, 18, 19| +|latitude| deg |The latitude of the Sender | -90-90 |1, 2, 3, 4, 9, 18, 19| +|longitude| deg |The longitude of the Sender | -180-180 |1, 2, 3, 4, 9, 18, 19| +|posAccuracy|boolean|Position Accuracy, true = DGPS Quality < 10m, false >10m|true,false|1, 2, 3, 4, 9, 18, 19| |navStatus|index|Navigational Status of AIS Target|0-15|1,2,3| |navStatusStr|string|A String associated with Nav Status|-|1,2,3| |utcYear|year|Message Type 4 Base Station Time Reference|1-999, 0=N/A|4| @@ -45,11 +45,11 @@ |destination|string|Destination of Vessel|-|5| |draught|m|Draught of Target|-|5| |heading|deg|True Heading of Target|0-359|1, 2, 3, 18, 19| -|sog|kn|Speed over Ground|0-102.1|1, 2, 3, 18, 19| -|sogStatus|string|Status of Speed over Ground, if status is VALID, then sog contains the Speed |VALID,HIGH,NA|1, 2, 3, 18, 19| -|cog|deg|Course over Ground|0-359|1, 2, 3, 18, 19| -|utcTsSec|s|Seconds of UTC Time|0-59|1, 2, 3, 18, 19| -|utcTsStatus|string|Status of the utcTsSec Paramerter|NA, MANUAL, ESTIMATED, INOPERATIVE or INVALID|1, 2, 3, 18, 19| +|sog|kn|Speed over Ground|0-102.1|1, 2, 3, 9, 18, 19| +|sogStatus|string|Status of Speed over Ground, if status is VALID, then sog contains the Speed |VALID,HIGH,NA|1, 2, 3, 9, 18, 19| +|cog|deg|Course over Ground|0-359|1, 2, 3, 9, 18, 19| +|utcTsSec|s|Seconds of UTC Time|0-59|1, 2, 3, 9, 18, 19| +|utcTsStatus|string|Status of the utcTsSec Paramerter|NA, MANUAL, ESTIMATED, INOPERATIVE or INVALID|1, 2, 3, 9, 18, 19| |vendorId|string|Vendor Name of the AIS equipment|-|24| |mothershipMmsi|string|MMSI of Mothership|9 Digit Number|24| |rot|deg/min|Rate of Turn|-126-126|1, 2, 3| @@ -62,3 +62,9 @@ |dac|number|Designated area code|-|8| |fid|number|Function identifier|-|8| |data|string|Application specific data|-|8| +|altitude|m|Altitude of SAR aircraft|0-4094|9| +|altitudeStatus|string|Status of altitude|VALID, HIGH, NA|9| +|altitudeSensor|number|Altitude sensor type|0=GNSS, 1=barometric|9| +|dte|boolean|Data terminal ready|true,false|9| +|assignedMode|boolean|Assigned mode flag|true,false|9| +|raim|boolean|RAIM flag in use|true,false|9| From b1648755f1fb083af4a35cd76f59e33df3476117 Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Tue, 20 Jan 2026 17:11:25 +0100 Subject: [PATCH 26/33] integrate ci, license and readme badges --- .github/workflows/test.yml | 30 ++++++ LICENSE | 201 +++++++++++++++++++++++++++++++++++++ README.md | 6 +- 3 files changed, 236 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/test.yml create mode 100644 LICENSE diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..787d85c --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,30 @@ +name: Tests + +on: + push: + branches: [master] + pull_request: + branches: [master] + +jobs: + test: + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [18, 20, 22] + + steps: + - uses: actions/checkout@v4 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + + - name: Install dependencies + run: npm ci + + - name: Run tests + run: npm test diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..cd482d8 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, +and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by +the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all +other entities that control, are controlled by, or are under common +control with that entity. For the purposes of this definition, +"control" means (i) the power, direct or indirect, to cause the +direction or management of such entity, whether by contract or +otherwise, or (ii) ownership of fifty percent (50%) or more of the +outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity +exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, +including but not limited to software source code, documentation +source, and configuration files. + +"Object" form shall mean any form resulting from mechanical +transformation or translation of a Source form, including but +not limited to compiled object code, generated documentation, +and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or +Object form, made available under the License, as indicated by a +copyright notice that is included in or attached to the work +(an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object +form, that is based on (or derived from) the Work and for which the +editorial revisions, annotations, elaborations, or other modifications +represent, as a whole, an original work of authorship. For the purposes +of this License, Derivative Works shall not include works that remain +separable from, or merely link (or bind by name) to the interfaces of, +the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including +the original version of the Work and any modifications or additions +to that Work or Derivative Works thereof, that is intentionally +submitted to Licensor for inclusion in the Work by the copyright owner +or by an individual or Legal Entity authorized to submit on behalf of +the copyright owner. For the purposes of this definition, "submitted" +means any form of electronic, verbal, or written communication sent +to the Licensor or its representatives, including but not limited to +communication on electronic mailing lists, source code control systems, +and issue tracking systems that are managed by, or on behalf of, the +Licensor for the purpose of discussing and improving the Work, but +excluding communication that is conspicuously marked or otherwise +designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity +on behalf of whom a Contribution has been received by Licensor and +subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of +this License, each Contributor hereby grants to You a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable +copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the +Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of +this License, each Contributor hereby grants to You a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable +(except as stated in this section) patent license to make, have made, +use, offer to sell, sell, import, and otherwise transfer the Work, +where such license applies only to those patent claims licensable +by such Contributor that are necessarily infringed by their +Contribution(s) alone or by combination of their Contribution(s) +with the Work to which such Contribution(s) was submitted. If You +institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Work +or a Contribution incorporated within the Work constitutes direct +or contributory patent infringement, then any patent licenses +granted to You under this License for that Work shall terminate +as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the +Work or Derivative Works thereof in any medium, with or without +modifications, and in Source or Object form, provided that You +meet the following conditions: + +(a) You must give any other recipients of the Work or +Derivative Works a copy of this License; and + +(b) You must cause any modified files to carry prominent notices +stating that You changed the files; and + +(c) You must retain, in the Source form of any Derivative Works +that You distribute, all copyright, patent, trademark, and +attribution notices from the Source form of the Work, +excluding those notices that do not pertain to any part of +the Derivative Works; and + +(d) If the Work includes a "NOTICE" text file as part of its +distribution, then any Derivative Works that You distribute must +include a readable copy of the attribution notices contained +within such NOTICE file, excluding those notices that do not +pertain to any part of the Derivative Works, in at least one +of the following places: within a NOTICE text file distributed +as part of the Derivative Works; within the Source form or +documentation, if provided along with the Derivative Works; or, +within a display generated by the Derivative Works, if and +wherever such third-party notices normally appear. The contents +of the NOTICE file are for informational purposes only and +do not modify the License. You may add Your own attribution +notices within Derivative Works that You distribute, alongside +or as an addendum to the NOTICE text from the Work, provided +that such additional attribution notices cannot be construed +as modifying the License. + +You may add Your own copyright statement to Your modifications and +may provide additional or different license terms and conditions +for use, reproduction, or distribution of Your modifications, or +for any such Derivative Works as a whole, provided Your use, +reproduction, and distribution of the Work otherwise complies with +the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, +any Contribution intentionally submitted for inclusion in the Work +by You to the Licensor shall be under the terms and conditions of +this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify +the terms of any separate license agreement you may have executed +with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade +names, trademarks, service marks, or product names of the Licensor, +except as required for reasonable and customary use in describing the +origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or +agreed to in writing, Licensor provides the Work (and each +Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +implied, including, without limitation, any warranties or conditions +of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A +PARTICULAR PURPOSE. You are solely responsible for determining the +appropriateness of using or redistributing the Work and assume any +risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, +whether in tort (including negligence), contract, or otherwise, +unless required by applicable law (such as deliberate and grossly +negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, +incidental, or consequential damages of any character arising as a +result of this License or out of the use or inability to use the +Work (including but not limited to damages for loss of goodwill, +work stoppage, computer failure or malfunction, or any and all +other commercial damages or losses), even if such Contributor +has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing +the Work or Derivative Works thereof, You may choose to offer, +and charge a fee for, acceptance of support, warranty, indemnity, +or other liability obligations and/or rights consistent with this +License. However, in accepting such obligations, You may act only +on Your own behalf and on Your sole responsibility, not on behalf +of any other Contributor, and only if You agree to indemnify, +defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason +of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + +To apply the Apache License to your work, attach the following +boilerplate notice, with the fields enclosed by brackets "[]" +replaced with your own identifying information. (Don't include +the brackets!) The text should be enclosed in the appropriate +comment syntax for the file format. We also recommend that a +file or class name and description of purpose be included on the +same "printed page" as the copyright notice for easier +identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/README.md b/README.md index 919b7b1..0fe3809 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,8 @@ # AisParser + +[![Tests](https://github.com/dakk/AisParser/actions/workflows/test.yml/badge.svg)](https://github.com/dakk/AisParser/actions/workflows/test.yml) +[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) + A Parser for NMEA0183 AIS messages. ## Installation @@ -12,7 +16,7 @@ npm run-script transpile ## How it works The modules approach to parsing AIS messages is 'on demand'. A message is merely stored and some basic checks are done by the **parse** function. When data is requested only as much of the message is parsed as is needed to decode the requested data. For instance when the aisType is read only one byte of the message is actually translated and parsed. So it makes sense to only read the values that are really needed. Although some common values are cached in the result object once they have been requested, most values are not - meaning that they are parsed every time they are requested. -The Module parses AIS messages of types 1,2,3,4,5,8,14,18,19,21 and 24. These are the common message types, most other types are related to inter vessel or vessel to shore communication. +The Module parses AIS messages of types 1,2,3,4,5,8,9,14,18,19,21 and 24. These are the common message types, most other types are related to inter vessel or vessel to shore communication. Although the parser has been thoroughly checked against AIS logs from AISHub and AIS recordings from the Panama Canal, the author takes no responsibility for the correctness of returned values. Please always keep a good watch and an eye on the traffic while commanding a vessel. From 918d5594e86157d4b8ead9ea526265cf65217fc3 Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Tue, 20 Jan 2026 17:14:30 +0100 Subject: [PATCH 27/33] fix ci install --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 787d85c..709e90b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -24,7 +24,7 @@ jobs: cache: 'npm' - name: Install dependencies - run: npm ci + run: npm install - name: Run tests run: npm test From 9741e6eae2116d4591c1faf5b530dbedafa83bf0 Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Tue, 20 Jan 2026 17:18:08 +0100 Subject: [PATCH 28/33] remove node 22 from ci, install jest --- .github/workflows/test.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 709e90b..1d5b848 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,7 +12,7 @@ jobs: strategy: matrix: - node-version: [18, 20, 22] + node-version: [16, 18, 20] # 22 steps: - uses: actions/checkout@v4 @@ -24,7 +24,9 @@ jobs: cache: 'npm' - name: Install dependencies - run: npm install + run: | + npm install + npm install jest - name: Run tests run: npm test From 784a4af97d54d11f563194ab13962270832d626f Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Tue, 20 Jan 2026 18:02:16 +0100 Subject: [PATCH 29/33] update all devdeps, add other node versions on ci --- .babelrc | 4 +- .github/workflows/test.yml | 6 +- makefile | 2 +- package-lock.json | 11550 +++++++++++++++++------------------ package.json | 19 +- 5 files changed, 5642 insertions(+), 5939 deletions(-) diff --git a/.babelrc b/.babelrc index b801069..abfa1df 100644 --- a/.babelrc +++ b/.babelrc @@ -1,4 +1,4 @@ { - "plugins": ["transform-flow-strip-types"], - "presets": ["env"] + "plugins": ["@babel/plugin-transform-flow-strip-types"], + "presets": ["@babel/preset-env"] } diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1d5b848..2ea1b7c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,7 +12,7 @@ jobs: strategy: matrix: - node-version: [16, 18, 20] # 22 + node-version: [18, 20, 22, 24] steps: - uses: actions/checkout@v4 @@ -24,9 +24,7 @@ jobs: cache: 'npm' - name: Install dependencies - run: | - npm install - npm install jest + run: npm ci - name: Run tests run: npm test diff --git a/makefile b/makefile index f81d2b0..3d0d26c 100644 --- a/makefile +++ b/makefile @@ -3,7 +3,7 @@ PATH := node_modules/.bin:$(PATH) SRC_FILES := $(shell find src/ -type f | grep -v __tests__) LIB_FILES := $(patsubst src/%.js, lib/%.js, $(SRC_FILES)) -BABEL_OPTS := --plugins transform-flow-strip-types --presets env +BABEL_OPTS := --plugins @babel/plugin-transform-flow-strip-types --presets @babel/preset-env .PHONY: all diff --git a/package-lock.json b/package-lock.json index 25301f1..ed5c882 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,8150 +5,7852 @@ "requires": true, "packages": { "": { + "name": "aisparser", "version": "0.0.13", "license": "Apache-2.0", "devDependencies": { - "babel-cli": "^6.26.0", - "babel-plugin-transform-flow-strip-types": "^6.22.0", - "babel-preset-env": "^1.6.1", - "flow-bin": "^0.61.0", - "jest": "^22.4.3", + "@babel/cli": "^7.26.4", + "@babel/core": "^7.26.9", + "@babel/plugin-transform-flow-strip-types": "^7.26.5", + "@babel/preset-env": "^7.26.9", + "flow-bin": "^0.297.0", + "jest": "^30.2.0", "random-seed": "^0.3.0" }, "engines": { "node": ">=6" } }, - "node_modules/@babel/code-frame": { - "version": "7.0.0-beta.44", - "resolved": "http://127.0.0.1:8083/repository/npm_local/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz", - "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==", + "node_modules/@babel/cli": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.28.6.tgz", + "integrity": "sha512-6EUNcuBbNkj08Oj4gAZ+BUU8yLCgKzgVX4gaTh09Ya2C8ICM4P+G30g4m3akRxSYAp3A/gnWchrNst7px4/nUQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/highlight": "7.0.0-beta.44" + "@jridgewell/trace-mapping": "^0.3.28", + "commander": "^6.2.0", + "convert-source-map": "^2.0.0", + "fs-readdir-recursive": "^1.1.0", + "glob": "^7.2.0", + "make-dir": "^2.1.0", + "slash": "^2.0.0" + }, + "bin": { + "babel": "bin/babel.js", + "babel-external-helpers": "bin/babel-external-helpers.js" + }, + "engines": { + "node": ">=6.9.0" + }, + "optionalDependencies": { + "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", + "chokidar": "^3.6.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/highlight": { - "version": "7.0.0-beta.44", - "resolved": "http://127.0.0.1:8083/repository/npm_local/@babel/highlight/-/highlight-7.0.0-beta.44.tgz", - "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==", + "node_modules/@babel/cli/node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, + "license": "ISC", + "optional": true, "dependencies": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^3.0.0" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@babel/cli/node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, + "license": "MIT", + "optional": true, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.3.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/chalk/-/chalk-2.3.2.tgz", - "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "node_modules/@babel/cli/node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "fill-range": "^7.1.1" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.3.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/supports-color/-/supports-color-5.3.0.tgz", - "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "node_modules/@babel/cli/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "has-flag": "^3.0.0" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": ">=4" + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/abab": { - "version": "1.0.4", - "resolved": "http://127.0.0.1:8083/repository/npm_local/abab/-/abab-1.0.4.tgz", - "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", - "deprecated": "Use your platform's native atob() and btoa() methods instead", - "dev": true + "node_modules/@babel/cli/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } }, - "node_modules/acorn": { - "version": "5.5.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/acorn/-/acorn-5.5.3.tgz", - "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", + "node_modules/@babel/cli/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, - "bin": { - "acorn": "bin/acorn" + "license": "MIT" + }, + "node_modules/@babel/cli/node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=0.4.0" + "node": ">=8" } }, - "node_modules/acorn-globals": { - "version": "4.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/acorn-globals/-/acorn-globals-4.1.0.tgz", - "integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==", + "node_modules/@babel/cli/node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, - "dependencies": { - "acorn": "^5.0.0" + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/ajv": { - "version": "5.5.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "node_modules/@babel/cli/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", + "optional": true, "dependencies": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/align-text": { - "version": "0.1.4", - "resolved": "http://127.0.0.1:8083/repository/npm_local/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "node_modules/@babel/cli/node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" + "binary-extensions": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/amdefine": { - "version": "1.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "node_modules/@babel/cli/node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", + "optional": true, "engines": { - "node": ">=0.4.2" + "node": ">=0.10.0" } }, - "node_modules/ansi-escapes": { - "version": "3.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/ansi-escapes/-/ansi-escapes-3.1.0.tgz", - "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", + "node_modules/@babel/cli/node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "node_modules/@babel/cli/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "node_modules/@babel/cli/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, + "license": "MIT", + "optional": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/anymatch": { - "version": "1.3.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "node_modules/@babel/cli/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "optional": true, - "dependencies": { - "micromatch": "^2.1.5", - "normalize-path": "^2.0.0" + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/append-transform": { - "version": "0.4.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "node_modules/@babel/cli/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "default-require-extensions": "^1.0.0" + "picomatch": "^2.2.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.10.0" } }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "http://127.0.0.1:8083/repository/npm_local/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/@babel/cli/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" + "license": "MIT", + "engines": { + "node": ">=6" } }, - "node_modules/arr-diff": { - "version": "2.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "node_modules/@babel/code-frame": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz", + "integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==", "dev": true, + "license": "MIT", "dependencies": { - "arr-flatten": "^1.0.1" + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" } }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "node_modules/@babel/code-frame/node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/compat-data": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.6.tgz", + "integrity": "sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" } }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "node_modules/@babel/core": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.6.tgz", + "integrity": "sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/generator": "^7.28.6", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/array-equal": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" }, - "node_modules/array-unique": { - "version": "0.2.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "node_modules/@babel/core/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "node_modules/@babel/core/node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/asn1": { - "version": "0.2.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true + "node_modules/@babel/core/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "engines": { - "node": ">=0.8" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "node_modules/@babel/generator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.6.tgz", + "integrity": "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" } }, - "node_modules/astral-regex": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "node_modules/@babel/generator/node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/async": { - "version": "2.6.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/async/-/async-2.6.0.tgz", - "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", "dev": true, + "license": "MIT", "dependencies": { - "lodash": "^4.14.0" + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/async-each": { - "version": "1.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true, - "optional": true - }, - "node_modules/async-limiter": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", - "dev": true - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "node_modules/atob": { - "version": "2.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/atob/-/atob-2.1.0.tgz", - "integrity": "sha512-SuiKH8vbsOyCALjA/+EINmt/Kdl+TQPrtFgW7XZZcwtryFu9e5kQoX3bjCW6mIvGH1fbeAZZuvwGR5IlBRznGw==", + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, "bin": { - "atob": "bin/atob.js" + "browserslist": "cli.js" }, "engines": { - "node": ">= 0.4.0" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "engines": { - "node": "*" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/aws4": { - "version": "1.7.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/aws4/-/aws4-1.7.0.tgz", - "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==", - "dev": true - }, - "node_modules/babel-cli": { - "version": "6.26.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babel-cli/-/babel-cli-6.26.0.tgz", - "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=", - "dev": true, - "dependencies": { - "babel-core": "^6.26.0", - "babel-polyfill": "^6.26.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "commander": "^2.11.0", - "convert-source-map": "^1.5.0", - "fs-readdir-recursive": "^1.0.0", - "glob": "^7.1.2", - "lodash": "^4.17.4", - "output-file-sync": "^1.1.2", - "path-is-absolute": "^1.0.1", - "slash": "^1.0.0", - "source-map": "^0.5.6", - "v8flags": "^2.1.1" + "node_modules/@babel/helper-compilation-targets/node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" }, "bin": { - "babel": "bin/babel.js", - "babel-doctor": "bin/babel-doctor.js", - "babel-external-helpers": "bin/babel-external-helpers.js", - "babel-node": "bin/babel-node.js" + "update-browserslist-db": "cli.js" }, - "optionalDependencies": { - "chokidar": "^1.6.1" + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "node_modules/babel-cli/node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", + "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", "dev": true, + "license": "MIT", "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/babel-cli/node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "node_modules/babel-code-frame": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", - "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "dependencies": { - "chalk": "^1.1.0", - "esutils": "^2.0.2", - "js-tokens": "^3.0.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/babel-core": { - "version": "6.26.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babel-core/-/babel-core-6.26.0.tgz", - "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", "dev": true, + "license": "MIT", "dependencies": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.0", - "debug": "^2.6.8", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.7", - "slash": "^1.0.0", - "source-map": "^0.5.6" + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/babel-core/node_modules/babel-code-frame": { - "version": "6.26.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, - "dependencies": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" } }, - "node_modules/babel-core/node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/regexpu-core": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", "dev": true, + "license": "MIT", "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.2.1" + }, + "engines": { + "node": ">=4" } }, - "node_modules/babel-core/node_modules/babel-template": { - "version": "6.26.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", "dev": true, - "dependencies": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } + "license": "MIT" }, - "node_modules/babel-core/node_modules/babel-traverse": { - "version": "6.26.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/regjsparser": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", + "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" } }, - "node_modules/babel-core/node_modules/babel-types": { - "version": "6.26.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "dependencies": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/babel-core/node_modules/babylon": { - "version": "6.18.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", + "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", "dev": true, - "bin": { - "babylon": "bin/babylon.js" + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "debug": "^4.4.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.10" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/babel-core/node_modules/globals": { - "version": "9.18.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "node_modules/@babel/helper-define-polyfill-provider/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/babel-core/node_modules/js-tokens": { - "version": "3.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "node_modules/babel-core/node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true + "node_modules/@babel/helper-define-polyfill-provider/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" }, - "node_modules/babel-core/node_modules/to-fast-properties": { - "version": "1.0.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" } }, - "node_modules/babel-generator": { - "version": "6.26.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", "dev": true, + "license": "MIT", "dependencies": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/babel-generator/node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", "dev": true, + "license": "MIT", "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/babel-generator/node_modules/babel-types": { - "version": "6.26.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/babel-generator/node_modules/jsesc": { - "version": "1.3.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", "dev": true, - "bin": { - "jsesc": "bin/jsesc" + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/babel-generator/node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "node_modules/babel-generator/node_modules/to-fast-properties": { - "version": "1.0.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" } }, - "node_modules/babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", - "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", "dev": true, + "license": "MIT", "dependencies": { - "babel-helper-explode-assignable-expression": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/babel-helper-builder-binary-assignment-operator-visitor/node_modules/babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "node_modules/@babel/helper-replace-supers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", + "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/babel-helper-builder-binary-assignment-operator-visitor/node_modules/babel-types/node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", "dev": true, + "license": "MIT", "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/babel-helper-builder-binary-assignment-operator-visitor/node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "node_modules/babel-helper-builder-binary-assignment-operator-visitor/node_modules/to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" } }, - "node_modules/babel-helper-call-delegate": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.22.0.tgz", - "integrity": "sha1-EZkhtWEg8X6drj90tPXMe8wbN+8=", + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, - "dependencies": { - "babel-helper-hoist-variables": "^6.22.0", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.22.0", - "babel-types": "^6.22.0" + "license": "MIT", + "engines": { + "node": ">=6.9.0" } }, - "node_modules/babel-helper-define-map": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.23.0.tgz", - "integrity": "sha1-FET5YMlpHWmiztaiBTFfj9AIBOc=", + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "dev": true, - "dependencies": { - "babel-helper-function-name": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-types": "^6.23.0", - "lodash": "^4.2.0" + "license": "MIT", + "engines": { + "node": ">=6.9.0" } }, - "node_modules/babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", - "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "node_modules/@babel/helper-wrap-function": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz", + "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/babel-helper-explode-assignable-expression/node_modules/babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "node_modules/@babel/helpers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/babel-helper-explode-assignable-expression/node_modules/babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "node_modules/@babel/parser": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.6.tgz", + "integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==", "dev": true, + "license": "MIT", "dependencies": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" + "@babel/types": "^7.28.6" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/babel-helper-explode-assignable-expression/node_modules/babel-traverse/node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", + "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", "dev": true, + "license": "MIT", "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/babel-helper-explode-assignable-expression/node_modules/babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/babel-helper-explode-assignable-expression/node_modules/babel-types/node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", "dev": true, + "license": "MIT", "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/babel-helper-explode-assignable-expression/node_modules/babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", "dev": true, - "bin": { - "babylon": "bin/babylon.js" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" } }, - "node_modules/babel-helper-explode-assignable-expression/node_modules/globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz", + "integrity": "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/traverse": "^7.28.6" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/babel-helper-explode-assignable-expression/node_modules/js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "node_modules/babel-helper-explode-assignable-expression/node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "node_modules/babel-helper-explode-assignable-expression/node_modules/to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-helper-function-name": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.23.0.tgz", - "integrity": "sha1-JXQtZxdciQPb5LbLnZ4fy43PI6Y=", + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, + "license": "MIT", "dependencies": { - "babel-helper-get-function-arity": "^6.22.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.23.0", - "babel-traverse": "^6.23.0", - "babel-types": "^6.23.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-helper-get-function-arity": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.22.0.tgz", - "integrity": "sha1-C+tGStadxzR0EKxq3p8DpQY09c4=", + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.22.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-helper-hoist-variables": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.22.0.tgz", - "integrity": "sha1-Pqy/cx2AcFhF3S6XGPYAz7m0unI=", + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.22.0" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-helper-optimise-call-expression": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.23.0.tgz", - "integrity": "sha1-8+5+7TVbQoITizPQK3g2nkcGIvU=", + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.23.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-helper-regex": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.22.0.tgz", - "integrity": "sha1-efUyvhZHsfDuNHS19cPaWAAdJH0=", + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.28.6.tgz", + "integrity": "sha512-D+OrJumc9McXNEBI/JmFnc/0uCM2/Y3PEBG3gfV3QIYkKv5pvnpzFrl1kYCrcHJP8nOeFB/SHi1IHz29pNGuew==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.22.0", - "lodash": "^4.2.0" + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz", + "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==", "dev": true, + "license": "MIT", "dependencies": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-helper-remap-async-to-generator/node_modules/babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-helper-remap-async-to-generator/node_modules/babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, + "license": "MIT", "dependencies": { - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-helper-remap-async-to-generator/node_modules/babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-helper-remap-async-to-generator/node_modules/babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-helper-remap-async-to-generator/node_modules/babel-template/node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, + "license": "MIT", "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-helper-remap-async-to-generator/node_modules/babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, + "license": "MIT", "dependencies": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-helper-remap-async-to-generator/node_modules/babel-traverse/node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, + "license": "MIT", "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-helper-remap-async-to-generator/node_modules/babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-helper-remap-async-to-generator/node_modules/babel-types/node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, + "license": "MIT", "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-helper-remap-async-to-generator/node_modules/babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, - "bin": { - "babylon": "bin/babylon.js" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-helper-remap-async-to-generator/node_modules/globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-helper-remap-async-to-generator/node_modules/js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "node_modules/babel-helper-remap-async-to-generator/node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "node_modules/babel-helper-remap-async-to-generator/node_modules/to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-helper-replace-supers": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.23.0.tgz", - "integrity": "sha1-7q+K2bWOxDN8qUIjus3KH42bS/0=", + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", "dev": true, + "license": "MIT", "dependencies": { - "babel-helper-optimise-call-expression": "^6.23.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.23.0", - "babel-traverse": "^6.23.0", - "babel-types": "^6.23.0" + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-helpers": { - "version": "6.24.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/babel-helpers/node_modules/babel-code-frame": { - "version": "6.26.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-helpers/node_modules/babel-template": { - "version": "6.26.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.6.tgz", + "integrity": "sha512-9knsChgsMzBV5Yh3kkhrZNxH3oCYAfMBkNNaVN4cP2RVlFPe8wYdwwcnOsAbkdDoV9UjFtOXWrWB52M8W4jNeA==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-helpers/node_modules/babel-template/node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz", + "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==", "dev": true, + "license": "MIT", "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-helpers/node_modules/babel-traverse": { - "version": "6.26.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", "dev": true, + "license": "MIT", "dependencies": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-helpers/node_modules/babel-traverse/node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz", + "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==", "dev": true, + "license": "MIT", "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-helpers/node_modules/babel-types": { - "version": "6.26.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz", + "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-helpers/node_modules/babel-types/node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz", + "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==", "dev": true, + "license": "MIT", "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "node_modules/babel-helpers/node_modules/babylon": { - "version": "6.18.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true, - "bin": { - "babylon": "bin/babylon.js" - } - }, - "node_modules/babel-helpers/node_modules/globals": { - "version": "9.18.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true, + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" } }, - "node_modules/babel-helpers/node_modules/js-tokens": { - "version": "3.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "node_modules/babel-helpers/node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "node_modules/babel-helpers/node_modules/to-fast-properties": { - "version": "1.0.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "node_modules/@babel/plugin-transform-classes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz", + "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/traverse": "^7.28.6" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-jest": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babel-jest/-/babel-jest-22.4.3.tgz", - "integrity": "sha512-BgSjmtl3mW3i+VeVHEr9d2zFSAT66G++pJcHQiUjd00pkW+voYXFctIm/indcqOWWXw5a1nUpR1XWszD9fJ1qg==", + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz", + "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==", "dev": true, + "license": "MIT", "dependencies": { - "babel-plugin-istanbul": "^4.1.5", - "babel-preset-jest": "^22.4.3" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/template": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "babel-core": "^6.0.0 || ^7.0.0-0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", + "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.22.0" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz", + "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.22.0" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-istanbul": { - "version": "4.1.6", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", - "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", "dev": true, + "license": "MIT", "dependencies": { - "babel-plugin-syntax-object-rest-spread": "^6.13.0", - "find-up": "^2.1.0", - "istanbul-lib-instrument": "^1.10.1", - "test-exclude": "^4.2.1" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-jest-hoist": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.4.3.tgz", - "integrity": "sha512-zhvv4f6OTWy2bYevcJftwGCWXMFe7pqoz41IhMi4xna7xNsX5NygdagsrE0y6kkfuXq8UalwvPwKTyAxME2E/g==", - "dev": true - }, - "node_modules/babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", - "dev": true - }, - "node_modules/babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", - "dev": true - }, - "node_modules/babel-plugin-syntax-flow": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", - "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=", - "dev": true - }, - "node_modules/babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", - "dev": true - }, - "node_modules/babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", - "dev": true - }, - "node_modules/babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.28.6.tgz", + "integrity": "sha512-5suVoXjC14lUN6ZL9OLKIHCNVWCrqGqlmEp/ixdXjvgnEl/kauLvvMO/Xw9NyMc95Joj1AeLVPVMvibBgSoFlA==", "dev": true, + "license": "MIT", "dependencies": { - "babel-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-functions": "^6.8.0", - "babel-runtime": "^6.22.0" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/babel-plugin-transform-es2015-arrow-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", - "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.22.0" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-transform-es2015-block-scoped-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", - "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz", + "integrity": "sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.22.0" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-transform-es2015-block-scoping": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.23.0.tgz", - "integrity": "sha1-5IiVzws3W+FIzXyIebQicHoFO1E=", + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz", + "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.23.0", - "babel-traverse": "^6.23.0", - "babel-types": "^6.23.0", - "lodash": "^4.2.0" + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-transform-es2015-classes": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.23.0.tgz", - "integrity": "sha1-SbU/MmICov0bO7ql4u3YpPeGQ8E=", + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", "dev": true, + "license": "MIT", "dependencies": { - "babel-helper-define-map": "^6.23.0", - "babel-helper-function-name": "^6.23.0", - "babel-helper-optimise-call-expression": "^6.23.0", - "babel-helper-replace-supers": "^6.23.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.23.0", - "babel-traverse": "^6.23.0", - "babel-types": "^6.23.0" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-transform-es2015-computed-properties": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.22.0.tgz", - "integrity": "sha1-fDg+lim7pIIMEbBCW91ikPfwV+c=", + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.27.1.tgz", + "integrity": "sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.22.0" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-flow": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.22.0" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-transform-es2015-duplicate-keys": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.22.0.tgz", - "integrity": "sha1-ZyOXAxwhYQ1y3Su7C6n7Ynfhw2s=", + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.22.0" + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-transform-es2015-for-of": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", - "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz", + "integrity": "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.22.0" + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-transform-es2015-function-name": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.22.0.tgz", - "integrity": "sha1-9fzIsJCT+aI8dqw9njksPsS3cQQ=", + "node_modules/@babel/plugin-transform-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", "dev": true, + "license": "MIT", "dependencies": { - "babel-helper-function-name": "^6.22.0", - "babel-runtime": "^6.22.0", - "babel-types": "^6.22.0" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-transform-es2015-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", - "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz", + "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.22.0" + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-transform-es2015-modules-amd": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.22.0.tgz", - "integrity": "sha1-v2nNNIiaQcM9kN+3QOAJHM/1LyE=", + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", "dev": true, + "license": "MIT", "dependencies": { - "babel-plugin-transform-es2015-modules-commonjs": "^6.22.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.22.0" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.23.0.tgz", - "integrity": "sha1-y6eqY3n7fsmSUObUbeKXOq/6e5I=", + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", "dev": true, + "license": "MIT", "dependencies": { - "babel-plugin-transform-strict-mode": "^6.22.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.23.0", - "babel-types": "^6.23.0" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-transform-es2015-modules-systemjs": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.23.0.tgz", - "integrity": "sha1-rjRpIn/6w5sDENkP7HO/3E9jF7A=", + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", + "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", "dev": true, + "license": "MIT", "dependencies": { - "babel-helper-hoist-variables": "^6.22.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.23.0" + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-transform-es2015-modules-umd": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.23.0.tgz", - "integrity": "sha1-jShK4uGe2P4h0rGybW5+D82U8PE=", + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.28.5.tgz", + "integrity": "sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew==", "dev": true, + "license": "MIT", "dependencies": { - "babel-plugin-transform-es2015-modules-amd": "^6.22.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.23.0" + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-transform-es2015-object-super": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.22.0.tgz", - "integrity": "sha1-2qYOEUoELqdp3VP+Uo/IIxHrmPw=", + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", "dev": true, + "license": "MIT", "dependencies": { - "babel-helper-replace-supers": "^6.22.0", - "babel-runtime": "^6.22.0" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-transform-es2015-parameters": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.23.0.tgz", - "integrity": "sha1-OiqrtwyK+UXVzjhvGkJQYlqDrjs=", + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", "dev": true, + "license": "MIT", "dependencies": { - "babel-helper-call-delegate": "^6.22.0", - "babel-helper-get-function-arity": "^6.22.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.23.0", - "babel-traverse": "^6.23.0", - "babel-types": "^6.23.0" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/babel-plugin-transform-es2015-shorthand-properties": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.22.0.tgz", - "integrity": "sha1-i6d24K/6pgv/IekhQDuKZSov9yM=", + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.22.0" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz", + "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.22.0" + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-transform-es2015-sticky-regex": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.22.0.tgz", - "integrity": "sha1-qzFoKehm7j9LnrlpOXV9GaW8RZM=", + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz", + "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==", "dev": true, + "license": "MIT", "dependencies": { - "babel-helper-regex": "^6.22.0", - "babel-runtime": "^6.22.0", - "babel-types": "^6.22.0" + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-transform-es2015-template-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", - "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz", + "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.22.0" + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-transform-es2015-typeof-symbol": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", - "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.22.0" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-transform-es2015-unicode-regex": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.22.0.tgz", - "integrity": "sha1-jZzCfn7h3s/mVFT7mGRSoEphPSA=", + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz", + "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==", "dev": true, + "license": "MIT", "dependencies": { - "babel-helper-regex": "^6.22.0", - "babel-runtime": "^6.22.0", - "regexpu-core": "^2.0.0" + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz", + "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==", "dev": true, + "license": "MIT", "dependencies": { - "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", - "babel-plugin-syntax-exponentiation-operator": "^6.8.0", - "babel-runtime": "^6.22.0" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-transform-flow-strip-types": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", - "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", "dev": true, + "license": "MIT", "dependencies": { - "babel-plugin-syntax-flow": "^6.18.0", - "babel-runtime": "^6.22.0" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-transform-regenerator": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.22.0.tgz", - "integrity": "sha1-ZXQFk6MZxEUiFXU41pC4QJRhfqY=", + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz", + "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==", "dev": true, + "license": "MIT", "dependencies": { - "regenerator-transform": "0.9.8" + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-plugin-transform-strict-mode": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.22.0.tgz", - "integrity": "sha1-4AjfATQP3IfpWdplmRt+BZcMjHw=", + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz", + "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.22.0" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-polyfill": { - "version": "6.26.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babel-polyfill/-/babel-polyfill-6.26.0.tgz", - "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "regenerator-runtime": "^0.10.5" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-polyfill/node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.6.tgz", + "integrity": "sha512-eZhoEZHYQLL5uc1gS5e9/oTknS0sSSAtd5TkKMUp3J+S/CaUjagc0kOUPsEbDmMeva0nC3WWl4SxVY6+OBuxfw==", "dev": true, + "license": "MIT", "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-polyfill/node_modules/babel-runtime/node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "node_modules/babel-polyfill/node_modules/core-js": { - "version": "2.5.5", - "resolved": "http://127.0.0.1:8083/repository/npm_local/core-js/-/core-js-2.5.5.tgz", - "integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs=", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "dev": true - }, - "node_modules/babel-polyfill/node_modules/regenerator-runtime": { - "version": "0.10.5", - "resolved": "http://127.0.0.1:8083/repository/npm_local/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", - "dev": true - }, - "node_modules/babel-preset-env": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz", - "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==", + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz", + "integrity": "sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==", "dev": true, + "license": "MIT", "dependencies": { - "babel-plugin-check-es2015-constants": "^6.22.0", - "babel-plugin-syntax-trailing-function-commas": "^6.22.0", - "babel-plugin-transform-async-to-generator": "^6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoping": "^6.23.0", - "babel-plugin-transform-es2015-classes": "^6.23.0", - "babel-plugin-transform-es2015-computed-properties": "^6.22.0", - "babel-plugin-transform-es2015-destructuring": "^6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", - "babel-plugin-transform-es2015-for-of": "^6.23.0", - "babel-plugin-transform-es2015-function-name": "^6.22.0", - "babel-plugin-transform-es2015-literals": "^6.22.0", - "babel-plugin-transform-es2015-modules-amd": "^6.22.0", - "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", - "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", - "babel-plugin-transform-es2015-modules-umd": "^6.23.0", - "babel-plugin-transform-es2015-object-super": "^6.22.0", - "babel-plugin-transform-es2015-parameters": "^6.23.0", - "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", - "babel-plugin-transform-es2015-spread": "^6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", - "babel-plugin-transform-es2015-template-literals": "^6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", - "babel-plugin-transform-exponentiation-operator": "^6.22.0", - "babel-plugin-transform-regenerator": "^6.22.0", - "browserslist": "^2.1.2", - "invariant": "^2.2.2", - "semver": "^5.3.0" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/babel-preset-jest": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babel-preset-jest/-/babel-preset-jest-22.4.3.tgz", - "integrity": "sha512-a+M3LTEXTq3gxv0uBN9Qm6ahUl7a8pj923nFbCUdqFUSsf3YrX8Uc+C3MEwji5Af3LiQjSC7w4ooYewlz8HRTA==", + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", "dev": true, + "license": "MIT", "dependencies": { - "babel-plugin-jest-hoist": "^22.4.3", - "babel-plugin-syntax-object-rest-spread": "^6.13.0" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-register": { - "version": "6.26.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", "dev": true, + "license": "MIT", "dependencies": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-register/node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "node_modules/@babel/plugin-transform-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz", + "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==", "dev": true, + "license": "MIT", "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-register/node_modules/core-js": { - "version": "2.5.5", - "resolved": "http://127.0.0.1:8083/repository/npm_local/core-js/-/core-js-2.5.5.tgz", - "integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs=", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "dev": true - }, - "node_modules/babel-register/node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "node_modules/babel-runtime": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", - "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=", + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", "dev": true, + "license": "MIT", "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.10.0" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-template": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.23.0.tgz", - "integrity": "sha1-BNTycK27OqcEqBQ64m+qUpI45jg=", + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.23.0", - "babel-types": "^6.23.0", - "babylon": "^6.11.0", - "lodash": "^4.2.0" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-traverse": { - "version": "6.23.1", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.23.1.tgz", - "integrity": "sha1-08tZAQ7NBql9gTEAZflmtpnhT0g=", + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", "dev": true, + "license": "MIT", "dependencies": { - "babel-code-frame": "^6.22.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-types": "^6.23.0", - "babylon": "^6.15.0", - "debug": "^2.2.0", - "globals": "^9.0.0", - "invariant": "^2.2.0", - "lodash": "^4.2.0" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/babel-types": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.23.0.tgz", - "integrity": "sha1-uxcXnXU4utOM0MnhFdNA935+ms8=", + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.22.0", - "esutils": "^2.0.2", - "lodash": "^4.2.0", - "to-fast-properties": "^1.0.1" - } - }, - "node_modules/babylon": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.15.0.tgz", - "integrity": "sha1-umXPoagOF1mw6J+1YuJ9zK5wNI4=", - "dev": true, - "bin": { - "babylon": "bin/babylon.js" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz", + "integrity": "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==", "dev": true, + "license": "MIT", "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", "dev": true, + "license": "MIT", "dependencies": { - "is-descriptor": "^1.0.0" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/base/node_modules/isobject": { - "version": "3.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz", + "integrity": "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "node_modules/@babel/preset-env": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.6.tgz", + "integrity": "sha512-GaTI4nXDrs7l0qaJ6Rg06dtOXTBCG6TMDB44zbqofCIC4PqC7SEvmFFtpxzCDw9W5aJ7RKVshgXTLvLdBFV/qw==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { - "tweetnacl": "^0.14.3" + "@babel/compat-data": "^7.28.6", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.28.6", + "@babel/plugin-syntax-import-attributes": "^7.28.6", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.28.6", + "@babel/plugin-transform-async-to-generator": "^7.28.6", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.6", + "@babel/plugin-transform-class-properties": "^7.28.6", + "@babel/plugin-transform-class-static-block": "^7.28.6", + "@babel/plugin-transform-classes": "^7.28.6", + "@babel/plugin-transform-computed-properties": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-dotall-regex": "^7.28.6", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.28.6", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.6", + "@babel/plugin-transform-exponentiation-operator": "^7.28.6", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.28.6", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.28.6", + "@babel/plugin-transform-modules-systemjs": "^7.28.5", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", + "@babel/plugin-transform-numeric-separator": "^7.28.6", + "@babel/plugin-transform-object-rest-spread": "^7.28.6", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.28.6", + "@babel/plugin-transform-optional-chaining": "^7.28.6", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.28.6", + "@babel/plugin-transform-private-property-in-object": "^7.28.6", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.28.6", + "@babel/plugin-transform-regexp-modifiers": "^7.28.6", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.28.6", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.28.6", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "core-js-compat": "^3.43.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/binary-extensions": { - "version": "1.11.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/binary-extensions/-/binary-extensions-1.11.0.tgz", - "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "file-uri-to-path": "1.0.0" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/boom": { - "version": "4.3.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/boom/-/boom-4.3.1.tgz", - "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", - "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "dev": true, + "license": "MIT", "dependencies": { - "hoek": "4.x.x" + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { - "node": ">=4.0.0" + "node": ">=6.9.0" } }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "http://127.0.0.1:8083/repository/npm_local/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/@babel/traverse": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.6.tgz", + "integrity": "sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==", "dev": true, + "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@babel/code-frame": "^7.28.6", + "@babel/generator": "^7.28.6", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.6", + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/braces": { - "version": "1.8.5", - "resolved": "http://127.0.0.1:8083/repository/npm_local/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "node_modules/@babel/traverse/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, + "license": "MIT", "dependencies": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" + "ms": "^2.1.3" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/browser-process-hrtime": { - "version": "0.1.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz", - "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=", - "dev": true + "node_modules/@babel/traverse/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" }, - "node_modules/browser-resolve": { - "version": "1.11.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/browser-resolve/-/browser-resolve-1.11.2.tgz", - "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "node_modules/@babel/types": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz", + "integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==", "dev": true, + "license": "MIT", "dependencies": { - "resolve": "1.1.7" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/browserslist": { - "version": "2.11.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.2.tgz", - "integrity": "sha512-BWT1zhRqq8BG/HrUQWB4pgkU6u27OyC1r5ErMn8zRaYTLtRS4cDtDCdZA3XYLsSmYWP2PPlBR8sggzrofImzgg==", - "deprecated": "Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.", + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@emnapi/core": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", + "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "caniuse-lite": "^1.0.30000791", - "electron-to-chromium": "^1.3.30" - }, - "bin": { - "browserslist": "cli.js" + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" } }, - "node_modules/bser": { - "version": "2.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/bser/-/bser-2.0.0.tgz", - "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", + "node_modules/@emnapi/runtime": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", + "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "node-int64": "^0.4.0" + "tslib": "^2.4.0" } }, - "node_modules/builtin-modules": { - "version": "1.1.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", "dev": true, - "engines": { - "node": ">=0.10.0" + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" } }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, + "license": "ISC", "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/cache-base/node_modules/isobject": { - "version": "3.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/callsites": { - "version": "2.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/camelcase": { - "version": "1.2.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true, - "optional": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30000792", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000792.tgz", - "integrity": "sha1-0M6pgfgRjzlhRxr7tDyaHlu/AzI=", - "dev": true - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "node_modules/center-align": { - "version": "0.1.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/chokidar": { - "version": "1.7.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, - "optional": true, + "license": "ISC", "dependencies": { - "anymatch": "^1.3.0", - "async-each": "^1.0.0", - "glob-parent": "^2.0.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^2.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0" + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" }, - "optionalDependencies": { - "fsevents": "^1.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/ci-info": { - "version": "1.1.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/ci-info/-/ci-info-1.1.3.tgz", - "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==", - "dev": true + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "http://127.0.0.1:8083/repository/npm_local/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "node_modules/@jest/console": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz", + "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==", "dev": true, + "license": "MIT", "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "slash": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "http://127.0.0.1:8083/repository/npm_local/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "is-descriptor": "^0.1.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/class-utils/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "deprecated": "Please upgrade to v0.1.7", + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/@jest/console/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/class-utils/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "deprecated": "Please upgrade to v0.1.5", + "node_modules/@jest/core": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.2.0.tgz", + "integrity": "sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ==", "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "@jest/console": "30.2.0", + "@jest/pattern": "30.0.1", + "@jest/reporters": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "exit-x": "^0.2.2", + "graceful-fs": "^4.2.11", + "jest-changed-files": "30.2.0", + "jest-config": "30.2.0", + "jest-haste-map": "30.2.0", + "jest-message-util": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.2.0", + "jest-resolve-dependencies": "30.2.0", + "jest-runner": "30.2.0", + "jest-runtime": "30.2.0", + "jest-snapshot": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "jest-watcher": "30.2.0", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/class-utils/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "node_modules/@jest/core/node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "fill-range": "^7.1.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/class-utils/node_modules/isobject": { - "version": "3.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/class-utils/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "node_modules/@jest/core/node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/cliui": { - "version": "2.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "node_modules/@jest/core/node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" } }, - "node_modules/cliui/node_modules/wordwrap": { - "version": "0.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "node_modules/@jest/core/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "optional": true, + "license": "MIT", "engines": { - "node": ">=0.4.0" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "node_modules/@jest/core/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, + "license": "MIT", "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" + "node": ">=8" } }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "node_modules/@jest/diff-sequences": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", + "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", + "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", "dev": true, + "license": "MIT", "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-mock": "30.2.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/color-convert": { - "version": "1.9.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "node_modules/@jest/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "^1.1.1" + "expect": "30.2.0", + "jest-snapshot": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/combined-stream": { - "version": "1.0.6", - "resolved": "http://127.0.0.1:8083/repository/npm_local/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "node_modules/@jest/expect-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", + "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", "dev": true, + "license": "MIT", "dependencies": { - "delayed-stream": "~1.0.0" + "@jest/get-type": "30.1.0" }, "engines": { - "node": ">= 0.8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/commander": { - "version": "2.15.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true - }, - "node_modules/compare-versions": { - "version": "3.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/compare-versions/-/compare-versions-3.1.0.tgz", - "integrity": "sha512-4hAxDSBypT/yp2ySFD346So6Ragw5xmBn/e/agIGl3bZr6DLUqnoRZPusxKrXdYRZpgexO9daejmIenlq/wrIQ==", - "dev": true - }, - "node_modules/component-emitter": { - "version": "1.2.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "1.5.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", - "dev": true - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "node_modules/@jest/fake-timers": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", + "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@sinonjs/fake-timers": "^13.0.0", + "@types/node": "*", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/core-js": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "dev": true - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "5.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "node_modules/@jest/get-type": { + "version": "30.1.0", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", + "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", "dev": true, - "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/cryptiles": { - "version": "3.1.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/cryptiles/-/cryptiles-3.1.2.tgz", - "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", - "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", + "node_modules/@jest/globals": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.2.0.tgz", + "integrity": "sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw==", "dev": true, + "license": "MIT", "dependencies": { - "boom": "5.x.x" + "@jest/environment": "30.2.0", + "@jest/expect": "30.2.0", + "@jest/types": "30.2.0", + "jest-mock": "30.2.0" }, "engines": { - "node": ">=4.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/cryptiles/node_modules/boom": { - "version": "5.2.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/boom/-/boom-5.2.0.tgz", - "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", - "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", + "node_modules/@jest/pattern": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", + "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", "dev": true, + "license": "MIT", "dependencies": { - "hoek": "4.x.x" + "@types/node": "*", + "jest-regex-util": "30.0.1" }, "engines": { - "node": ">=4.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/cssom": { - "version": "0.3.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/cssom/-/cssom-0.3.2.tgz", - "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", - "dev": true - }, - "node_modules/cssstyle": { - "version": "0.2.37", - "resolved": "http://127.0.0.1:8083/repository/npm_local/cssstyle/-/cssstyle-0.2.37.tgz", - "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", + "node_modules/@jest/reporters": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.2.0.tgz", + "integrity": "sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ==", "dev": true, + "license": "MIT", "dependencies": { - "cssom": "0.3.x" + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", + "@types/node": "*", + "chalk": "^4.1.2", + "collect-v8-coverage": "^1.0.2", + "exit-x": "^0.2.2", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^5.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "slash": "^3.0.0", + "string-length": "^4.0.2", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "assert-plus": "^1.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/data-urls": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/data-urls/-/data-urls-1.0.0.tgz", - "integrity": "sha512-ai40PPQR0Fn1lD2PPie79CibnlMN2AYiDhwFX/rZHVsxbs5kNJSjegqXIprhouGXlRdEnfybva7kqRGnB6mypA==", + "node_modules/@jest/reporters/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { - "abab": "^1.0.4", - "whatwg-mimetype": "^2.0.0", - "whatwg-url": "^6.4.0" + "balanced-match": "^1.0.0" } }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "node_modules/@jest/reporters/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "node_modules/@jest/reporters/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "node_modules/@jest/reporters/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10" + "node": ">=8" } }, - "node_modules/deep-is": { - "version": "0.1.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "node_modules/default-require-extensions": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "strip-bom": "^2.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/define-properties": { - "version": "1.1.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/define-properties/-/define-properties-1.1.2.tgz", - "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, + "license": "MIT", "dependencies": { - "foreach": "^2.0.5", - "object-keys": "^1.0.8" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": ">= 0.4" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "node_modules/@jest/snapshot-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.2.0.tgz", + "integrity": "sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug==", "dev": true, + "license": "MIT", "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "@jest/types": "30.2.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "natural-compare": "^1.4.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/define-property/node_modules/isobject": { - "version": "3.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "node_modules/@jest/snapshot-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "node_modules/@jest/snapshot-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=0.4.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/detect-indent": { - "version": "4.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "node_modules/@jest/snapshot-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "repeating": "^2.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/detect-newline": { - "version": "2.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "node_modules/@jest/source-map": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", + "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "callsites": "^3.1.0", + "graceful-fs": "^4.2.11" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/diff": { - "version": "3.5.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "node_modules/@jest/test-result": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz", + "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==", "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "30.2.0", + "@jest/types": "30.2.0", + "@types/istanbul-lib-coverage": "^2.0.6", + "collect-v8-coverage": "^1.0.2" + }, "engines": { - "node": ">=0.3.1" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/domexception": { - "version": "1.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "deprecated": "Use your platform's native DOMException instead", + "node_modules/@jest/test-sequencer": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.2.0.tgz", + "integrity": "sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q==", "dev": true, + "license": "MIT", "dependencies": { - "webidl-conversions": "^4.0.2" + "@jest/test-result": "30.2.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/ecc-jsbn": { - "version": "0.1.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "node_modules/@jest/test-sequencer/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "optional": true, - "dependencies": { - "jsbn": "~0.1.0" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/electron-releases": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/electron-releases/-/electron-releases-2.1.0.tgz", - "integrity": "sha512-cyKFD1bTE/UgULXfaueIN1k5EPFzs+FRc/rvCY5tIynefAPqopQEgjr0EzY+U3Dqrk/G4m9tXSPuZ77v6dL/Rw==", - "deprecated": "this package is no longer updated, please fetch version information from https://releases.electronjs.org/releases.json instead", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.3.30", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.30.tgz", - "integrity": "sha512-zx1Prv7kYLfc4OA60FhxGbSo4qrEjgSzpo1/37i7l9ltXPYOoQBtjQxY9KmsgfHnBxHlBGXwLlsbt/gub1w5lw==", + "node_modules/@jest/transform": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", + "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", "dev": true, + "license": "MIT", "dependencies": { - "electron-releases": "^2.1.0" + "@babel/core": "^7.27.4", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.1", + "chalk": "^4.1.2", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "micromatch": "^4.0.8", + "pirates": "^4.0.7", + "slash": "^3.0.0", + "write-file-atomic": "^5.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/error-ex": { - "version": "1.3.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "is-arrayish": "^0.2.1" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/es-abstract": { - "version": "1.11.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/es-abstract/-/es-abstract-1.11.0.tgz", - "integrity": "sha512-ZnQrE/lXTTQ39ulXZ+J1DTFazV9qBy61x2bY071B+qGco8Z8q1QddsLdt/EF8Ai9hcWH72dWS0kFqXLxOxqslA==", + "node_modules/@jest/transform/node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { - "es-to-primitive": "^1.1.1", - "function-bind": "^1.1.1", - "has": "^1.0.1", - "is-callable": "^1.1.3", - "is-regex": "^1.0.4" + "fill-range": "^7.1.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" } }, - "node_modules/es-to-primitive": { - "version": "1.1.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/es-to-primitive/-/es-to-primitive-1.1.1.tgz", - "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "is-callable": "^1.1.1", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "node_modules/@jest/transform/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, - "engines": { - "node": ">=0.8.0" - } + "license": "MIT" }, - "node_modules/escodegen": { - "version": "1.9.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/escodegen/-/escodegen-1.9.1.tgz", - "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", + "node_modules/@jest/transform/node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=4.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" + "node": ">=8" } }, - "node_modules/escodegen/node_modules/esprima": { - "version": "3.1.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "node_modules/@jest/transform/node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=4" + "node": ">=8.6" } }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/@jest/transform/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "optional": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/esprima": { - "version": "4.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "node_modules/@jest/transform/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, + "license": "MIT", "engines": { - "node": ">=4" - } - }, - "node_modules/estraverse": { - "version": "4.2.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/esutils": { - "version": "2.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/exec-sh": { - "version": "0.2.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/exec-sh/-/exec-sh-0.2.1.tgz", - "integrity": "sha512-aLt95pexaugVtQerpmE51+4QfWrNc304uez7jvj6fWnN8GeEHpttB8F36n8N7uVhUMbH/1enbxQ9HImZ4w/9qg==", - "dev": true, - "dependencies": { - "merge": "^1.1.3" + "node": ">=8" } }, - "node_modules/execa": { - "version": "0.7.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true, - "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/expand-brackets": { - "version": "0.1.5", - "resolved": "http://127.0.0.1:8083/repository/npm_local/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, + "license": "MIT", "dependencies": { - "is-posix-bracket": "^0.1.0" + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/expand-range": { - "version": "1.8.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "fill-range": "^2.1.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expect": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/expect/-/expect-22.4.3.tgz", - "integrity": "sha512-XcNXEPehqn8b/jm8FYotdX0YrXn36qp4HWlrVT4ktwQas1l1LPxiVWncYnnL2eyMtKAmVIaG0XAp0QlrqJaxaA==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "jest-diff": "^22.4.3", - "jest-get-type": "^22.4.3", - "jest-matcher-utils": "^22.4.3", - "jest-message-util": "^22.4.3", - "jest-regex-util": "^22.4.3" - } - }, - "node_modules/expect/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" + "node": ">=8" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/extend": { - "version": "3.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", - "dev": true - }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/extend-shallow/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "is-plain-object": "^2.0.4" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/extglob": { - "version": "0.3.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, + "license": "MIT", "dependencies": { - "is-extglob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true, - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/fast-deep-equal": { - "version": "1.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "http://127.0.0.1:8083/repository/npm_local/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "node_modules/fb-watchman": { - "version": "2.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/fb-watchman/-/fb-watchman-2.0.0.tgz", - "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", "dev": true, + "license": "MIT", "dependencies": { - "bser": "^2.0.0" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "license": "MIT", - "optional": true - }, - "node_modules/filename-regex": { - "version": "2.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=6.0.0" } }, - "node_modules/fileset": { - "version": "2.0.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/fileset/-/fileset-2.0.3.tgz", - "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "dev": true, - "dependencies": { - "glob": "^7.0.3", - "minimatch": "^3.0.3" - } + "license": "MIT" }, - "node_modules/fill-range": { - "version": "2.2.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, + "license": "MIT", "dependencies": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^1.1.3", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - }, - "engines": { - "node": ">=0.10.0" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/find-up": { - "version": "2.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" } }, - "node_modules/flow-bin": { - "version": "0.61.0", - "resolved": "https://registry.npmjs.org/flow-bin/-/flow-bin-0.61.0.tgz", - "integrity": "sha512-w6SGi5CDfKLNGzYssRhW6N37qKclDXijsxDQ5M8c3WbivRYta0Horv22bwakegfKBVDnyeS0lRW3OqBC74eq2g==", + "node_modules/@nicolo-ribaudo/chokidar-2": { + "version": "2.1.8-no-fsevents.3", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", + "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==", "dev": true, - "bin": { - "flow": "cli.js" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT", + "optional": true }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, + "license": "MIT", + "optional": true, "engines": { - "node": ">=0.10.0" + "node": ">=14" } }, - "node_modules/for-own": { - "version": "0.1.5", - "resolved": "http://127.0.0.1:8083/repository/npm_local/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", "dev": true, - "dependencies": { - "for-in": "^1.0.1" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" } }, - "node_modules/foreach": { - "version": "2.0.5", - "resolved": "http://127.0.0.1:8083/repository/npm_local/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "node_modules/@sinclair/typebox": { + "version": "0.34.47", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.47.tgz", + "integrity": "sha512-ZGIBQ+XDvO5JQku9wmwtabcVTHJsgSWAHYtVuM9pBNNR5E88v6Jcj/llpmsjivig5X8A8HHOb4/mbEKPS5EvAw==", "dev": true, - "engines": { - "node": "*" - } + "license": "MIT" }, - "node_modules/form-data": { - "version": "2.3.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" + "type-detect": "4.0.8" } }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" + "@sinonjs/commons": "^3.0.1" } }, - "node_modules/fs-readdir-recursive": { - "version": "1.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "deprecated": "Upgrade to fsevents v2 to mitigate potential security issues", + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", "dev": true, - "hasInstallScript": true, "license": "MIT", "optional": true, - "os": [ - "darwin" - ], "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/get-caller-file": { - "version": "1.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", - "dev": true - }, - "node_modules/get-stream": { - "version": "3.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "http://127.0.0.1:8083/repository/npm_local/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true, - "engines": { - "node": ">=0.10.0" + "tslib": "^2.4.0" } }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "http://127.0.0.1:8083/repository/npm_local/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, + "license": "MIT", "dependencies": { - "assert-plus": "^1.0.0" + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "node_modules/glob": { - "version": "7.1.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", "dev": true, + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" + "@babel/types": "^7.0.0" } }, - "node_modules/glob-base": { - "version": "0.3.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, + "license": "MIT", "dependencies": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "node_modules/glob-parent": { - "version": "2.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", "dev": true, + "license": "MIT", "dependencies": { - "is-glob": "^2.0.0" + "@babel/types": "^7.28.2" } }, - "node_modules/globals": { - "version": "9.16.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.16.0.tgz", - "integrity": "sha1-Y+kDZYFx7C2fUbHTHeXiuNwB+4A=", + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/graceful-fs": { - "version": "4.1.11", - "resolved": "http://127.0.0.1:8083/repository/npm_local/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, - "engines": { - "node": ">=0.4.0" + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/growly": { - "version": "1.3.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", - "dev": true - }, - "node_modules/handlebars": { - "version": "4.0.11", - "resolved": "http://127.0.0.1:8083/repository/npm_local/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, + "license": "MIT", "dependencies": { - "async": "^1.4.0", - "optimist": "^0.6.1", - "source-map": "^0.4.4" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^2.6" + "@types/istanbul-lib-report": "*" } }, - "node_modules/handlebars/node_modules/async": { - "version": "1.5.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "node_modules/handlebars/node_modules/source-map": { - "version": "0.4.4", - "resolved": "http://127.0.0.1:8083/repository/npm_local/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "node_modules/@types/node": { + "version": "25.0.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", + "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", "dev": true, + "license": "MIT", "dependencies": { - "amdefine": ">=0.0.4" - }, - "engines": { - "node": ">=0.8.0" + "undici-types": "~7.16.0" } }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "dev": true, - "engines": { - "node": ">=4" - } + "license": "MIT" }, - "node_modules/har-validator": { - "version": "5.0.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", - "deprecated": "this library is no longer supported", + "node_modules/@types/yargs": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", "dev": true, + "license": "MIT", "dependencies": { - "ajv": "^5.1.0", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=4" + "@types/yargs-parser": "*" } }, - "node_modules/has": { - "version": "1.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/has/-/has-1.0.1.tgz", - "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true, - "dependencies": { - "function-bind": "^1.0.2" - }, - "engines": { - "node": ">= 0.8.0" - } + "license": "MIT" }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "ISC" }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], "dev": true, - "engines": { - "node": ">=4" - } + "license": "MIT", + "optional": true, + "os": [ + "android" + ] }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT", + "optional": true, + "os": [ + "android" + ] }, - "node_modules/has-value/node_modules/isobject": { - "version": "3.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number": { - "version": "3.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hawk": { - "version": "6.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/hawk/-/hawk-6.0.2.tgz", - "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", - "deprecated": "This module moved to @hapi/hawk. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.", - "dev": true, - "dependencies": { - "boom": "4.x.x", - "cryptiles": "3.x.x", - "hoek": "4.x.x", - "sntp": "2.x.x" - }, - "engines": { - "node": ">=4.5.0" - } - }, - "node_modules/hoek": { - "version": "4.2.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/hoek/-/hoek-4.2.1.tgz", - "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", - "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/home-or-tmp": { - "version": "2.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hosted-git-info": { - "version": "2.6.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/hosted-git-info/-/hosted-git-info-2.6.0.tgz", - "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "dev": true, - "dependencies": { - "whatwg-encoding": "^1.0.1" - } - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.19", - "resolved": "http://127.0.0.1:8083/repository/npm_local/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/import-local": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/import-local/-/import-local-1.0.0.tgz", - "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", - "dev": true, - "dependencies": { - "pkg-dir": "^2.0.0", - "resolve-cwd": "^2.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "http://127.0.0.1:8083/repository/npm_local/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "http://127.0.0.1:8083/repository/npm_local/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "node_modules/invariant": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", - "dev": true, - "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/invert-kv": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "deprecated": "Please upgrade to v1.0.1", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "6.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "optional": true, - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/is-builtin-module": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "dependencies": { - "builtin-modules": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-callable": { - "version": "1.1.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-callable/-/is-callable-1.1.3.tgz", - "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-ci": { - "version": "1.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-ci/-/is-ci-1.1.0.tgz", - "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", - "dev": true, - "dependencies": { - "ci-info": "^1.0.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "deprecated": "Please upgrade to v1.0.1", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "6.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-date-object": { - "version": "1.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "6.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-dotfile": { - "version": "1.0.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-equal-shallow": { - "version": "0.1.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "dependencies": { - "is-primitive": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finite": { - "version": "1.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/is-generator-fn": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-generator-fn/-/is-generator-fn-1.0.0.tgz", - "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "2.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "dependencies": { - "is-extglob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "2.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-odd": { - "version": "2.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-odd/-/is-odd-2.0.0.tgz", - "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", - "dev": true, - "dependencies": { - "is-number": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-odd/node_modules/is-number": { - "version": "4.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-plain-object/node_modules/isobject": { - "version": "3.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-posix-bracket": { - "version": "0.1.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-primitive": { - "version": "2.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-regex": { - "version": "1.0.4", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true, - "dependencies": { - "has": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-symbol": { - "version": "1.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-symbol/-/is-symbol-1.0.1.tgz", - "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/isobject": { - "version": "2.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "node_modules/istanbul-api": { - "version": "1.3.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/istanbul-api/-/istanbul-api-1.3.1.tgz", - "integrity": "sha512-duj6AlLcsWNwUpfyfHt0nWIeRiZpuShnP40YTxOGQgtaN8fd6JYSxsvxUphTDy8V5MfDXo4s/xVCIIvVCO808g==", - "dev": true, - "dependencies": { - "async": "^2.1.4", - "compare-versions": "^3.1.0", - "fileset": "^2.0.2", - "istanbul-lib-coverage": "^1.2.0", - "istanbul-lib-hook": "^1.2.0", - "istanbul-lib-instrument": "^1.10.1", - "istanbul-lib-report": "^1.1.4", - "istanbul-lib-source-maps": "^1.2.4", - "istanbul-reports": "^1.3.0", - "js-yaml": "^3.7.0", - "mkdirp": "^0.5.1", - "once": "^1.4.0" - } - }, - "node_modules/istanbul-api/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/istanbul-api/node_modules/debug/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/istanbul-api/node_modules/istanbul-lib-source-maps": { - "version": "1.2.4", - "resolved": "http://127.0.0.1:8083/repository/npm_local/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.4.tgz", - "integrity": "sha512-UzuK0g1wyQijiaYQxj/CdNycFhAd2TLtO2obKQMTZrZ1jzEMRY3rvpASEKkaxbRR6brvdovfA03znPa/pXcejg==", - "dev": true, - "dependencies": { - "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.2.0", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.1", - "source-map": "^0.5.3" - } - }, - "node_modules/istanbul-lib-coverage": { - "version": "1.2.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", - "integrity": "sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A==", - "dev": true - }, - "node_modules/istanbul-lib-hook": { - "version": "1.2.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/istanbul-lib-hook/-/istanbul-lib-hook-1.2.0.tgz", - "integrity": "sha512-p3En6/oGkFQV55Up8ZPC2oLxvgSxD8CzA0yBrhRZSh3pfv3OFj9aSGVC0yoerAi/O4u7jUVnOGVX1eVFM+0tmQ==", - "deprecated": "1.2.0 should have been a major version bump", - "dev": true, - "dependencies": { - "append-transform": "^0.4.0" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "1.10.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz", - "integrity": "sha512-1dYuzkOCbuR5GRJqySuZdsmsNKPL3PTuyPevQfoCXJePT9C8y1ga75neU+Tuy9+yS3G/dgx8wgOmp2KLpgdoeQ==", - "dev": true, - "dependencies": { - "babel-generator": "^6.18.0", - "babel-template": "^6.16.0", - "babel-traverse": "^6.18.0", - "babel-types": "^6.18.0", - "babylon": "^6.18.0", - "istanbul-lib-coverage": "^1.2.0", - "semver": "^5.3.0" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/babylon": { - "version": "6.18.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true, - "bin": { - "babylon": "bin/babylon.js" - } - }, - "node_modules/istanbul-lib-report": { - "version": "1.1.4", - "resolved": "http://127.0.0.1:8083/repository/npm_local/istanbul-lib-report/-/istanbul-lib-report-1.1.4.tgz", - "integrity": "sha512-Azqvq5tT0U09nrncK3q82e/Zjkxa4tkFZv7E6VcqP0QCPn6oNljDPfrZEC/umNXds2t7b8sRJfs6Kmpzt8m2kA==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^1.2.0", - "mkdirp": "^0.5.1", - "path-parse": "^1.0.5", - "supports-color": "^3.1.2" - } - }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "dependencies": { - "has-flag": "^1.0.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "1.2.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz", - "integrity": "sha512-fDa0hwU/5sDXwAklXgAoCJCOsFsBplVQ6WBldz5UwaqOzmDhUK4nfuR7/G//G2lERlblUNJB8P6e8cXq3a7MlA==", - "dev": true, - "dependencies": { - "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.1.2", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.1", - "source-map": "^0.5.3" - } - }, - "node_modules/istanbul-lib-source-maps/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/istanbul-lib-source-maps/node_modules/debug/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/istanbul-reports": { - "version": "1.3.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/istanbul-reports/-/istanbul-reports-1.3.0.tgz", - "integrity": "sha512-y2Z2IMqE1gefWUaVjrBm0mSKvUkaBy9Vqz8iwr/r40Y9hBbIteH5wqHG/9DLTfJ9xUnUT2j7A3+VVJ6EaYBllA==", - "dev": true, - "dependencies": { - "handlebars": "^4.0.3" - } - }, - "node_modules/jest": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jest/-/jest-22.4.3.tgz", - "integrity": "sha512-FFCdU/pXOEASfHxFDOWUysI/+FFoqiXJADEIXgDKuZyqSmBD3tZ4BEGH7+M79v7czj7bbkhwtd2LaEDcJiM/GQ==", - "dev": true, - "dependencies": { - "import-local": "^1.0.0", - "jest-cli": "^22.4.3" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-changed-files": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jest-changed-files/-/jest-changed-files-22.4.3.tgz", - "integrity": "sha512-83Dh0w1aSkUNFhy5d2dvqWxi/y6weDwVVLU6vmK0cV9VpRxPzhTeGimbsbRDSnEoszhF937M4sDLLeS7Cu/Tmw==", - "dev": true, - "dependencies": { - "throat": "^4.0.0" - } - }, - "node_modules/jest-config": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jest-config/-/jest-config-22.4.3.tgz", - "integrity": "sha512-KSg3EOToCgkX+lIvenKY7J8s426h6ahXxaUFJxvGoEk0562Z6inWj1TnKoGycTASwiLD+6kSYFALcjdosq9KIQ==", - "dev": true, - "dependencies": { - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^22.4.3", - "jest-environment-node": "^22.4.3", - "jest-get-type": "^22.4.3", - "jest-jasmine2": "^22.4.3", - "jest-regex-util": "^22.4.3", - "jest-resolve": "^22.4.3", - "jest-util": "^22.4.3", - "jest-validate": "^22.4.3", - "pretty-format": "^22.4.3" - } - }, - "node_modules/jest-config/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-config/node_modules/chalk": { - "version": "2.3.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/chalk/-/chalk-2.3.2.tgz", - "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-config/node_modules/supports-color": { - "version": "5.3.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/supports-color/-/supports-color-5.3.0.tgz", - "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-diff": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jest-diff/-/jest-diff-22.4.3.tgz", - "integrity": "sha512-/QqGvCDP5oZOF6PebDuLwrB2BMD8ffJv6TAGAdEVuDx1+uEgrHpSFrfrOiMRx2eJ1hgNjlQrOQEHetVwij90KA==", - "dev": true, - "dependencies": { - "chalk": "^2.0.1", - "diff": "^3.2.0", - "jest-get-type": "^22.4.3", - "pretty-format": "^22.4.3" - } - }, - "node_modules/jest-diff/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "2.3.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/chalk/-/chalk-2.3.2.tgz", - "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-diff/node_modules/supports-color": { - "version": "5.3.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/supports-color/-/supports-color-5.3.0.tgz", - "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-docblock": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jest-docblock/-/jest-docblock-22.4.3.tgz", - "integrity": "sha512-uPKBEAw7YrEMcXueMKZXn/rbMxBiSv48fSqy3uEnmgOlQhSX+lthBqHb1fKWNVmFqAp9E/RsSdBfiV31LbzaOg==", - "dev": true, - "dependencies": { - "detect-newline": "^2.1.0" - } - }, - "node_modules/jest-environment-jsdom": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jest-environment-jsdom/-/jest-environment-jsdom-22.4.3.tgz", - "integrity": "sha512-FviwfR+VyT3Datf13+ULjIMO5CSeajlayhhYQwpzgunswoaLIPutdbrnfUHEMyJCwvqQFaVtTmn9+Y8WCt6n1w==", - "dev": true, - "dependencies": { - "jest-mock": "^22.4.3", - "jest-util": "^22.4.3", - "jsdom": "^11.5.1" - } - }, - "node_modules/jest-environment-node": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jest-environment-node/-/jest-environment-node-22.4.3.tgz", - "integrity": "sha512-reZl8XF6t/lMEuPWwo9OLfttyC26A5AMgDyEQ6DBgZuyfyeNUzYT8BFo6uxCCP/Av/b7eb9fTi3sIHFPBzmlRA==", - "dev": true, - "dependencies": { - "jest-mock": "^22.4.3", - "jest-util": "^22.4.3" - } - }, - "node_modules/jest-get-type": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jest-get-type/-/jest-get-type-22.4.3.tgz", - "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==", - "dev": true - }, - "node_modules/jest-haste-map": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jest-haste-map/-/jest-haste-map-22.4.3.tgz", - "integrity": "sha512-4Q9fjzuPVwnaqGKDpIsCSoTSnG3cteyk2oNVjBX12HHOaF1oxql+uUiqZb5Ndu7g/vTZfdNwwy4WwYogLh29DQ==", - "dev": true, - "dependencies": { - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.1.11", - "jest-docblock": "^22.4.3", - "jest-serializer": "^22.4.3", - "jest-worker": "^22.4.3", - "micromatch": "^2.3.11", - "sane": "^2.0.0" - } - }, - "node_modules/jest-jasmine2": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jest-jasmine2/-/jest-jasmine2-22.4.3.tgz", - "integrity": "sha512-yZCPCJUcEY6R5KJB/VReo1AYI2b+5Ky+C+JA1v34jndJsRcLpU4IZX4rFJn7yDTtdNbO/nNqg+3SDIPNH2ecnw==", - "dev": true, - "dependencies": { - "chalk": "^2.0.1", - "co": "^4.6.0", - "expect": "^22.4.3", - "graceful-fs": "^4.1.11", - "is-generator-fn": "^1.0.0", - "jest-diff": "^22.4.3", - "jest-matcher-utils": "^22.4.3", - "jest-message-util": "^22.4.3", - "jest-snapshot": "^22.4.3", - "jest-util": "^22.4.3", - "source-map-support": "^0.5.0" - } - }, - "node_modules/jest-jasmine2/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-jasmine2/node_modules/chalk": { - "version": "2.3.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/chalk/-/chalk-2.3.2.tgz", - "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-jasmine2/node_modules/source-map": { - "version": "0.6.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-jasmine2/node_modules/source-map-support": { - "version": "0.5.4", - "resolved": "http://127.0.0.1:8083/repository/npm_local/source-map-support/-/source-map-support-0.5.4.tgz", - "integrity": "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==", - "dev": true, - "dependencies": { - "source-map": "^0.6.0" - } - }, - "node_modules/jest-jasmine2/node_modules/supports-color": { - "version": "5.3.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/supports-color/-/supports-color-5.3.0.tgz", - "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-leak-detector": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jest-leak-detector/-/jest-leak-detector-22.4.3.tgz", - "integrity": "sha512-NZpR/Ls7+ndO57LuXROdgCGz2RmUdC541tTImL9bdUtU3WadgFGm0yV+Ok4Fuia/1rLAn5KaJ+i76L6e3zGJYQ==", - "dev": true, - "dependencies": { - "pretty-format": "^22.4.3" - } - }, - "node_modules/jest-matcher-utils": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jest-matcher-utils/-/jest-matcher-utils-22.4.3.tgz", - "integrity": "sha512-lsEHVaTnKzdAPR5t4B6OcxXo9Vy4K+kRRbG5gtddY8lBEC+Mlpvm1CJcsMESRjzUhzkz568exMV1hTB76nAKbA==", - "dev": true, - "dependencies": { - "chalk": "^2.0.1", - "jest-get-type": "^22.4.3", - "pretty-format": "^22.4.3" - } - }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-matcher-utils/node_modules/chalk": { - "version": "2.3.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/chalk/-/chalk-2.3.2.tgz", - "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-matcher-utils/node_modules/supports-color": { - "version": "5.3.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/supports-color/-/supports-color-5.3.0.tgz", - "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-message-util": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jest-message-util/-/jest-message-util-22.4.3.tgz", - "integrity": "sha512-iAMeKxhB3Se5xkSjU0NndLLCHtP4n+GtCqV0bISKA5dmOXQfEbdEmYiu2qpnWBDCQdEafNDDU6Q+l6oBMd/+BA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0-beta.35", - "chalk": "^2.0.1", - "micromatch": "^2.3.11", - "slash": "^1.0.0", - "stack-utils": "^1.0.1" - } - }, - "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-message-util/node_modules/chalk": { - "version": "2.3.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/chalk/-/chalk-2.3.2.tgz", - "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-message-util/node_modules/supports-color": { - "version": "5.3.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/supports-color/-/supports-color-5.3.0.tgz", - "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-mock": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jest-mock/-/jest-mock-22.4.3.tgz", - "integrity": "sha512-+4R6mH5M1G4NK16CKg9N1DtCaFmuxhcIqF4lQK/Q1CIotqMs/XBemfpDPeVZBFow6iyUNu6EBT9ugdNOTT5o5Q==", - "dev": true - }, - "node_modules/jest-regex-util": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jest-regex-util/-/jest-regex-util-22.4.3.tgz", - "integrity": "sha512-LFg1gWr3QinIjb8j833bq7jtQopiwdAs67OGfkPrvy7uNUbVMfTXXcOKXJaeY5GgjobELkKvKENqq1xrUectWg==", - "dev": true - }, - "node_modules/jest-resolve": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jest-resolve/-/jest-resolve-22.4.3.tgz", - "integrity": "sha512-u3BkD/MQBmwrOJDzDIaxpyqTxYH+XqAXzVJP51gt29H8jpj3QgKof5GGO2uPGKGeA1yTMlpbMs1gIQ6U4vcRhw==", - "dev": true, - "dependencies": { - "browser-resolve": "^1.11.2", - "chalk": "^2.0.1" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jest-resolve-dependencies/-/jest-resolve-dependencies-22.4.3.tgz", - "integrity": "sha512-06czCMVToSN8F2U4EvgSB1Bv/56gc7MpCftZ9z9fBgUQM7dzHGCMBsyfVA6dZTx8v0FDcnALf7hupeQxaBCvpA==", - "dev": true, - "dependencies": { - "jest-regex-util": "^22.4.3" - } - }, - "node_modules/jest-resolve/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-resolve/node_modules/chalk": { - "version": "2.3.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/chalk/-/chalk-2.3.2.tgz", - "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-resolve/node_modules/supports-color": { - "version": "5.3.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/supports-color/-/supports-color-5.3.0.tgz", - "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/jest-runner": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jest-runner/-/jest-runner-22.4.3.tgz", - "integrity": "sha512-U7PLlQPRlWNbvOHWOrrVay9sqhBJmiKeAdKIkvX4n1G2tsvzLlf77nBD28GL1N6tGv4RmuTfI8R8JrkvCa+IBg==", + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "exit": "^0.1.2", - "jest-config": "^22.4.3", - "jest-docblock": "^22.4.3", - "jest-haste-map": "^22.4.3", - "jest-jasmine2": "^22.4.3", - "jest-leak-detector": "^22.4.3", - "jest-message-util": "^22.4.3", - "jest-runtime": "^22.4.3", - "jest-util": "^22.4.3", - "jest-worker": "^22.4.3", - "throat": "^4.0.0" - } - }, - "node_modules/jest-runtime": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jest-runtime/-/jest-runtime-22.4.3.tgz", - "integrity": "sha512-Eat/esQjevhx9BgJEC8udye+FfoJ2qvxAZfOAWshYGS22HydHn5BgsvPdTtt9cp0fSl5LxYOFA1Pja9Iz2Zt8g==", - "dev": true, - "dependencies": { - "babel-core": "^6.0.0", - "babel-jest": "^22.4.3", - "babel-plugin-istanbul": "^4.1.5", - "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", - "exit": "^0.1.2", - "graceful-fs": "^4.1.11", - "jest-config": "^22.4.3", - "jest-haste-map": "^22.4.3", - "jest-regex-util": "^22.4.3", - "jest-resolve": "^22.4.3", - "jest-util": "^22.4.3", - "jest-validate": "^22.4.3", - "json-stable-stringify": "^1.0.1", - "micromatch": "^2.3.11", - "realpath-native": "^1.0.0", - "slash": "^1.0.0", - "strip-bom": "3.0.0", - "write-file-atomic": "^2.1.0", - "yargs": "^10.0.3" - }, - "bin": { - "jest-runtime": "bin/jest-runtime.js" - } + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] }, - "node_modules/jest-runtime/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/jest-runtime/node_modules/chalk": { - "version": "2.3.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/chalk/-/chalk-2.3.2.tgz", - "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/jest-runtime/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], "dev": true, - "engines": { - "node": ">=4" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/jest-runtime/node_modules/supports-color": { - "version": "5.3.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/supports-color/-/supports-color-5.3.0.tgz", - "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-serializer": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jest-serializer/-/jest-serializer-22.4.3.tgz", - "integrity": "sha512-uPaUAppx4VUfJ0QDerpNdF43F68eqKWCzzhUlKNDsUPhjOon7ZehR4C809GCqh765FoMRtTVUVnGvIoskkYHiw==", - "dev": true + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/jest-snapshot": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jest-snapshot/-/jest-snapshot-22.4.3.tgz", - "integrity": "sha512-JXA0gVs5YL0HtLDCGa9YxcmmV2LZbwJ+0MfyXBBc5qpgkEYITQFJP7XNhcHFbUvRiniRpRbGVfJrOoYhhGE0RQ==", + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], "dev": true, - "dependencies": { - "chalk": "^2.0.1", - "jest-diff": "^22.4.3", - "jest-matcher-utils": "^22.4.3", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^22.4.3" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/jest-snapshot/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/jest-snapshot/node_modules/chalk": { - "version": "2.3.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/chalk/-/chalk-2.3.2.tgz", - "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/jest-snapshot/node_modules/supports-color": { - "version": "5.3.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/supports-color/-/supports-color-5.3.0.tgz", - "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/jest-util": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jest-util/-/jest-util-22.4.3.tgz", - "integrity": "sha512-rfDfG8wyC5pDPNdcnAlZgwKnzHvZDu8Td2NJI/jAGKEGxJPYiE4F0ss/gSAkG4778Y23Hvbz+0GMrDJTeo7RjQ==", + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "callsites": "^2.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.11", - "is-ci": "^1.0.10", - "jest-message-util": "^22.4.3", - "mkdirp": "^0.5.1", - "source-map": "^0.6.0" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/jest-util/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/jest-util/node_modules/chalk": { - "version": "2.3.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/chalk/-/chalk-2.3.2.tgz", - "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "@napi-rs/wasm-runtime": "^0.2.11" }, "engines": { - "node": ">=4" - } - }, - "node_modules/jest-util/node_modules/source-map": { - "version": "0.6.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=14.0.0" } }, - "node_modules/jest-util/node_modules/supports-color": { - "version": "5.3.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/supports-color/-/supports-color-5.3.0.tgz", - "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/jest-validate": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jest-validate/-/jest-validate-22.4.3.tgz", - "integrity": "sha512-CfFM18W3GSP/xgmA4UouIx0ljdtfD2mjeBC6c89Gg17E44D4tQhAcTrZmf9djvipwU30kSTnk6CzcxdCCeSXfA==", + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], "dev": true, - "dependencies": { - "chalk": "^2.0.1", - "jest-config": "^22.4.3", - "jest-get-type": "^22.4.3", - "leven": "^2.1.0", - "pretty-format": "^22.4.3" - } + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/jest-validate/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/jest-validate/node_modules/chalk": { - "version": "2.3.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/chalk/-/chalk-2.3.2.tgz", - "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "type-fest": "^0.21.3" }, "engines": { - "node": ">=4" - } - }, - "node_modules/jest-validate/node_modules/supports-color": { - "version": "5.3.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/supports-color/-/supports-color-5.3.0.tgz", - "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" + "node": ">=8" }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-worker": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jest-worker/-/jest-worker-22.4.3.tgz", - "integrity": "sha512-B1ucW4fI8qVAuZmicFxI1R3kr2fNeYJyvIQ1rKcuLYnenFV5K5aMbxFj6J0i00Ju83S8jP2d7Dz14+AvbIHRYQ==", - "dev": true, - "dependencies": { - "merge-stream": "^1.0.1" - } - }, - "node_modules/jest/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" + "sprintf-js": "~1.0.2" } }, - "node_modules/jest/node_modules/chalk": { - "version": "2.3.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/chalk/-/chalk-2.3.2.tgz", - "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "node_modules/babel-jest": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.2.0.tgz", + "integrity": "sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest/node_modules/jest-cli": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jest-cli/-/jest-cli-22.4.3.tgz", - "integrity": "sha512-IiHybF0DJNqZPsbjn4Cy4vcqcmImpoFwNFnkehzVw8lTUSl4axZh5DHewu5bdpZF2Y5gUqFKYzH0FH4Qx2k+UA==", - "dev": true, - "dependencies": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "import-local": "^1.0.0", - "is-ci": "^1.0.10", - "istanbul-api": "^1.1.14", - "istanbul-lib-coverage": "^1.1.1", - "istanbul-lib-instrument": "^1.8.0", - "istanbul-lib-source-maps": "^1.2.1", - "jest-changed-files": "^22.4.3", - "jest-config": "^22.4.3", - "jest-environment-jsdom": "^22.4.3", - "jest-get-type": "^22.4.3", - "jest-haste-map": "^22.4.3", - "jest-message-util": "^22.4.3", - "jest-regex-util": "^22.4.3", - "jest-resolve-dependencies": "^22.4.3", - "jest-runner": "^22.4.3", - "jest-runtime": "^22.4.3", - "jest-snapshot": "^22.4.3", - "jest-util": "^22.4.3", - "jest-validate": "^22.4.3", - "jest-worker": "^22.4.3", - "micromatch": "^2.3.11", - "node-notifier": "^5.2.1", - "realpath-native": "^1.0.0", - "rimraf": "^2.5.4", - "slash": "^1.0.0", - "string-length": "^2.0.0", - "strip-ansi": "^4.0.0", - "which": "^1.2.12", - "yargs": "^10.0.3" - }, - "bin": { - "jest": "bin/jest.js" + "@jest/transform": "30.2.0", + "@types/babel__core": "^7.20.5", + "babel-plugin-istanbul": "^7.0.1", + "babel-preset-jest": "30.2.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "slash": "^3.0.0" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/jest/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, - "engines": { - "node": ">=4" + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-0" } }, - "node_modules/jest/node_modules/supports-color": { - "version": "5.3.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/supports-color/-/supports-color-5.3.0.tgz", - "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" - } - }, - "node_modules/js-tokens": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz", - "integrity": "sha1-COnxMkhKLEWjCQfp3E1VZ7fxFNc=", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.11.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/js-yaml/-/js-yaml-3.11.0.tgz", - "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "node": ">=8" }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true - }, - "node_modules/jsdom": { - "version": "11.7.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jsdom/-/jsdom-11.7.0.tgz", - "integrity": "sha512-9NzSc4Iz4gN9p4uoPbBUzro21QdgL32swaWIaWS8eEVQ2I69fRJAy/MKyvlEIk0V7HtKgfMbbOKyTZUrzR2Hsw==", - "dev": true, - "dependencies": { - "abab": "^1.0.4", - "acorn": "^5.3.0", - "acorn-globals": "^4.1.0", - "array-equal": "^1.0.0", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": ">= 0.2.37 < 0.3.0", - "data-urls": "^1.0.0", - "domexception": "^1.0.0", - "escodegen": "^1.9.0", - "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.2.0", - "nwmatcher": "^1.4.3", - "parse5": "4.0.0", - "pn": "^1.1.0", - "request": "^2.83.0", - "request-promise-native": "^1.0.5", - "sax": "^1.2.4", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.3", - "w3c-hr-time": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.3", - "whatwg-mimetype": "^2.1.0", - "whatwg-url": "^6.4.0", - "ws": "^4.0.0", - "xml-name-validator": "^3.0.0" - } - }, - "node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/json-schema": { - "version": "0.2.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.3.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - }, - "node_modules/json-stable-stringify": { - "version": "1.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "jsonify": "~0.0.0" - } - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "node_modules/json5": { - "version": "0.5.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true, - "bin": { - "json5": "lib/cli.js" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jsonify": { - "version": "0.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "node_modules/babel-jest/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, + "license": "MIT", "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/jsprim": { - "version": "1.4.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "engines": [ - "node >=0.6.0" - ], + "license": "MIT", "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/kind-of": { - "version": "3.2.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/babel-plugin-istanbul": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", "dev": true, + "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], "dependencies": { - "is-buffer": "^1.1.5" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", + "test-exclude": "^6.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/lazy-cache": { - "version": "1.0.4", - "resolved": "http://127.0.0.1:8083/repository/npm_local/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "node_modules/babel-plugin-jest-hoist": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.2.0.tgz", + "integrity": "sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==", "dev": true, - "optional": true, + "license": "MIT", + "dependencies": { + "@types/babel__core": "^7.20.5" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/lcid": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", + "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", "dev": true, + "license": "MIT", "dependencies": { - "invert-kv": "^1.0.0" + "@babel/compat-data": "^7.27.7", + "@babel/helper-define-polyfill-provider": "^0.6.5", + "semver": "^6.3.1" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/left-pad": { - "version": "1.3.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/left-pad/-/left-pad-1.3.0.tgz", - "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", - "deprecated": "use String.prototype.padStart()", - "dev": true - }, - "node_modules/leven": { - "version": "2.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/leven/-/leven-2.1.0.tgz", - "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "engines": { - "node": ">=0.10.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", "dev": true, + "license": "MIT", "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" }, - "engines": { - "node": ">= 0.8.0" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/load-json-file": { - "version": "1.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", + "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", "dev": true, + "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" + "@babel/helper-define-polyfill-provider": "^0.6.5" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/locate-path": { - "version": "2.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "node_modules/babel-preset-current-node-syntax": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", "dev": true, + "license": "MIT", "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" }, - "engines": { - "node": ">=4" + "peerDependencies": { + "@babel/core": "^7.0.0 || ^8.0.0-0" } }, - "node_modules/lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "node_modules/longest": { - "version": "1.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "node_modules/babel-preset-jest": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.2.0.tgz", + "integrity": "sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==", "dev": true, - "optional": true, + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "30.2.0", + "babel-preset-current-node-syntax": "^1.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-beta.1" } }, - "node_modules/loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, - "dependencies": { - "js-tokens": "^3.0.0" - }, + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.16", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.16.tgz", + "integrity": "sha512-KeUZdBuxngy825i8xvzaK1Ncnkx0tBmb3k8DkEuqjKRkmtvNTjey2ZsNeh8Dw4lfKvbCOu9oeNx2TKm2vHqcRw==", + "dev": true, + "license": "Apache-2.0", "bin": { - "loose-envify": "cli.js" + "baseline-browser-mapping": "dist/cli.js" } }, - "node_modules/lru-cache": { - "version": "4.1.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/lru-cache/-/lru-cache-4.1.2.tgz", - "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/makeerror": { - "version": "1.0.11", - "resolved": "http://127.0.0.1:8083/repository/npm_local/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "tmpl": "1.0.x" + "node-int64": "^0.4.0" } }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true, + "license": "MIT" + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, - "dependencies": { - "object-visit": "^1.0.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/mem": { - "version": "1.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "node_modules/caniuse-lite": { + "version": "1.0.30001765", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001765.tgz", + "integrity": "sha512-LWcNtSyZrakjECqmpP4qdg0MMGdN368D7X8XvvAqOcqMv0RxnlqVKZl2V6/mBR68oYMxOZPLw/gO7DuisMHUvQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, - "dependencies": { - "mimic-fn": "^1.0.0" - }, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/merge": { - "version": "1.2.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/merge/-/merge-1.2.0.tgz", - "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=", - "dev": true + "node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/merge-stream": { - "version": "1.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/merge-stream/-/merge-stream-1.0.1.tgz", - "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "node_modules/cjs-module-lexer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", + "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", "dev": true, - "dependencies": { - "readable-stream": "^2.0.1" - } + "license": "MIT" }, - "node_modules/micromatch": { - "version": "2.3.11", - "resolved": "http://127.0.0.1:8083/repository/npm_local/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "license": "ISC", "dependencies": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/mime-db": { - "version": "1.33.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/mime-types": { - "version": "2.1.18", - "resolved": "http://127.0.0.1:8083/repository/npm_local/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { - "mime-db": "~1.33.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" } }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "http://127.0.0.1:8083/repository/npm_local/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "node_modules/collect-v8-coverage": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", + "dev": true, + "license": "MIT" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "color-name": "~1.1.4" }, "engines": { - "node": "*" + "node": ">=7.0.0" } }, - "node_modules/minimist": { - "version": "0.0.8", - "resolved": "http://127.0.0.1:8083/repository/npm_local/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" }, - "node_modules/mixin-deep": { - "version": "1.3.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", - "deprecated": "Critical bug fixed in v2.0.1, please upgrade to the latest version.", + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true, - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "node_modules/core-js-compat": { + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.47.0.tgz", + "integrity": "sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==", "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "is-plain-object": "^2.0.4" + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" }, "engines": { - "node": ">=0.10.0" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/mkdirp": { - "version": "0.5.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", - "dev": true, + "node_modules/core-js-compat/node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "minimist": "0.0.8" + "escalade": "^3.2.0", + "picocolors": "^1.1.1" }, "bin": { - "mkdirp": "bin/cmd.js" + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "node_modules/nan": { - "version": "2.22.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.2.tgz", - "integrity": "sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==", + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", - "optional": true - }, - "node_modules/nanomatch": { - "version": "1.2.9", - "resolved": "http://127.0.0.1:8083/repository/npm_local/nanomatch/-/nanomatch-1.2.9.tgz", - "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", - "dev": true, "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-odd": "^2.0.0", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/nanomatch/node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "node_modules/dedent": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz", + "integrity": "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==", "dev": true, - "engines": { - "node": ">=0.10.0" + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } } }, - "node_modules/nanomatch/node_modules/array-unique": { - "version": "0.3.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/nanomatch/node_modules/kind-of": { - "version": "6.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true + "node_modules/electron-to-chromium": { + "version": "1.5.267", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", + "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", + "dev": true, + "license": "ISC" }, - "node_modules/node-notifier": { - "version": "5.2.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/node-notifier/-/node-notifier-5.2.1.tgz", - "integrity": "sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg==", + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, - "dependencies": { - "growly": "^1.3.0", - "semver": "^5.4.1", - "shellwords": "^0.1.1", - "which": "^1.3.0" + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/normalize-package-data": { - "version": "2.4.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true, + "license": "MIT" + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "dev": true, + "license": "MIT", "dependencies": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "is-arrayish": "^0.2.1" } }, - "node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, + "license": "MIT", "dependencies": { - "path-key": "^2.0.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "node_modules/exit-x": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", + "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/nwmatcher": { - "version": "1.4.4", - "resolved": "http://127.0.0.1:8083/repository/npm_local/nwmatcher/-/nwmatcher-1.4.4.tgz", - "integrity": "sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==", - "dev": true + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } }, - "node_modules/oauth-sign": { - "version": "0.8.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "node_modules/flow-bin": { + "version": "0.297.0", + "resolved": "https://registry.npmjs.org/flow-bin/-/flow-bin-0.297.0.tgz", + "integrity": "sha512-WN9MrYZss1dGs+MzMqz6DjqErRQyyRfcm+8IsQFaKrtfLZrWSCBil0rP/ukv+DLL0jbNxhdlp14ks15TyznL+A==", "dev": true, + "license": "MIT", + "bin": { + "flow": "cli.js" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, + "license": "ISC", "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "http://127.0.0.1:8083/repository/npm_local/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/object-copy/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "deprecated": "Please upgrade to v0.1.7", + "node_modules/fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" + "license": "MIT" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object-copy/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "deprecated": "Please upgrade to v0.1.5", + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" } }, - "node_modules/object-copy/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8.0.0" } }, - "node_modules/object-keys": { - "version": "1.0.11", - "resolved": "http://127.0.0.1:8083/repository/npm_local/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { - "isobject": "^3.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/object-visit/node_modules/isobject": { - "version": "3.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, + "license": "MIT", "dependencies": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.4" } }, - "node_modules/object.omit": { - "version": "2.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true, - "dependencies": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - }, + "license": "MIT" + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=0.10.0" + "node": ">=10.17.0" } }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, + "license": "MIT", "dependencies": { - "isobject": "^3.0.1" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/object.pick/node_modules/isobject": { - "version": "3.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=0.8.19" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, + "license": "ISC", "dependencies": { + "once": "^1.3.0", "wrappy": "1" } }, - "node_modules/optimist": { - "version": "0.6.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true, - "dependencies": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - } + "license": "ISC" + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" }, - "node_modules/optionator": { - "version": "0.8.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, + "license": "MIT", "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" + "hasown": "^2.0.2" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/optionator/node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, - "node_modules/os-homedir": { - "version": "1.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/os-locale": { + "node_modules/is-generator-fn": { "version": "2.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, - "dependencies": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - }, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/output-file-sync": { - "version": "1.1.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/output-file-sync/-/output-file-sync-1.1.2.tgz", - "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true, - "dependencies": { - "graceful-fs": "^4.1.4", - "mkdirp": "^0.5.1", - "object-assign": "^4.1.0" - } + "license": "ISC" }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/p-limit": { - "version": "1.2.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/p-limit/-/p-limit-1.2.0.tgz", - "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "p-try": "^1.0.0" + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/p-locate": { - "version": "2.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, - "dependencies": { - "p-limit": "^1.1.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/p-try": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/parse-glob": { - "version": "3.0.4", - "resolved": "http://127.0.0.1:8083/repository/npm_local/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/parse-json": { - "version": "2.2.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "node_modules/istanbul-lib-source-maps": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "error-ex": "^1.2.0" + "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/parse5": { - "version": "4.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", - "dev": true - }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "node_modules/istanbul-lib-source-maps/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "node_modules/istanbul-lib-source-maps/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, - "engines": { - "node": ">=4" - } + "license": "MIT" }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/path-key": { - "version": "2.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, - "engines": { - "node": ">=4" + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/path-parse": { - "version": "1.0.5", - "resolved": "http://127.0.0.1:8083/repository/npm_local/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", - "dev": true - }, - "node_modules/path-type": { - "version": "1.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "node_modules/jest": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-30.2.0.tgz", + "integrity": "sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==", "dev": true, + "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "@jest/core": "30.2.0", + "@jest/types": "30.2.0", + "import-local": "^3.2.0", + "jest-cli": "30.2.0" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "node_modules/jest-changed-files": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.2.0.tgz", + "integrity": "sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ==", "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^5.1.1", + "jest-util": "30.2.0", + "p-limit": "^3.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "http://127.0.0.1:8083/repository/npm_local/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "node_modules/jest-circus": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.2.0.tgz", + "integrity": "sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg==", "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.2.0", + "@jest/expect": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "co": "^4.6.0", + "dedent": "^1.6.0", + "is-generator-fn": "^2.1.0", + "jest-each": "30.2.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-runtime": "30.2.0", + "jest-snapshot": "30.2.0", + "jest-util": "30.2.0", + "p-limit": "^3.1.0", + "pretty-format": "30.2.0", + "pure-rand": "^7.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "pinkie": "^2.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/pkg-dir": { - "version": "2.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "find-up": "^2.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/pn": { - "version": "1.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "dev": true - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "node_modules/jest-circus/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "node_modules/jest-circus/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/preserve": { - "version": "0.2.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "node_modules/jest-cli": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.2.0.tgz", + "integrity": "sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA==", "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/types": "30.2.0", + "chalk": "^4.1.2", + "exit-x": "^0.2.2", + "import-local": "^3.2.0", + "jest-config": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "yargs": "^17.7.2" + }, + "bin": { + "jest": "bin/jest.js" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/pretty-format": { - "version": "22.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/pretty-format/-/pretty-format-22.4.3.tgz", - "integrity": "sha512-S4oT9/sT6MN7/3COoOy+ZJeA92VmOnveLHgrwBE3Z1W5N9S2A1QGNYiE1z75DAENbJrXXUb+OWXhpJcg05QKQQ==", + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^3.0.0", - "ansi-styles": "^3.2.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true, + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/private": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", - "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", + "node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/process-nextick-args": { - "version": "2.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true + "node_modules/jest-config": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.2.0.tgz", + "integrity": "sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@jest/get-type": "30.1.0", + "@jest/pattern": "30.0.1", + "@jest/test-sequencer": "30.2.0", + "@jest/types": "30.2.0", + "babel-jest": "30.2.0", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "deepmerge": "^4.3.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", + "jest-circus": "30.2.0", + "jest-docblock": "30.2.0", + "jest-environment-node": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.2.0", + "jest-runner": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "micromatch": "^4.0.8", + "parse-json": "^5.2.0", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "esbuild-register": ">=3.4.0", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "esbuild-register": { + "optional": true + }, + "ts-node": { + "optional": true + } + } }, - "node_modules/punycode": { - "version": "2.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/qs": { - "version": "6.5.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "node_modules/jest-config/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, - "engines": { - "node": ">=0.6" + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/random-seed": { - "version": "0.3.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/random-seed/-/random-seed-0.3.0.tgz", - "integrity": "sha1-2UXy4fOPSejViRNDG4v2u5N1Vs0=", + "node_modules/jest-config/node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { - "json-stringify-safe": "^5.0.1" + "fill-range": "^7.1.1" }, "engines": { - "node": ">= 0.6.0" + "node": ">=8" } }, - "node_modules/randomatic": { - "version": "1.1.7", - "resolved": "http://127.0.0.1:8083/repository/npm_local/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/randomatic/node_modules/is-number": { - "version": "3.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "node_modules/jest-config/node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/randomatic/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/jest-config/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "dev": true, + "license": "ISC", "dependencies": { - "is-buffer": "^1.1.5" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": ">=0.10.0" + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/randomatic/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "node_modules/jest-config/node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.6" } }, - "node_modules/read-pkg": { - "version": "1.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "node_modules/jest-config/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/read-pkg-up": { - "version": "1.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "node_modules/jest-config/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" + "license": "MIT", + "engines": { + "node": ">=8.6" }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-config/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "1.1.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "2.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "node_modules/jest-diff": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", + "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", "dev": true, + "license": "MIT", "dependencies": { - "pinkie-promise": "^2.0.0" + "@jest/diff-sequences": "30.0.1", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.2.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/readable-stream": { - "version": "2.3.6", - "resolved": "http://127.0.0.1:8083/repository/npm_local/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/readdirp": { - "version": "2.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/readdirp/-/readdirp-2.1.0.tgz", - "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.2", - "minimatch": "^3.0.2", - "readable-stream": "^2.0.2", - "set-immediate-shim": "^1.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/realpath-native": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/realpath-native/-/realpath-native-1.0.0.tgz", - "integrity": "sha512-XJtlRJ9jf0E1H1SLeJyQ9PGzQD7S65h1pRXEcAeK48doKOnKxcgPeNohJvD5u/2sI9J1oke6E8bZHS/fmW1UiQ==", + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "util.promisify": "^1.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/regenerate": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", - "integrity": "sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=", - "dev": true - }, - "node_modules/regenerator-runtime": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.1.tgz", - "integrity": "sha1-JX9BlhzkRVixj3gUr0jBdVn5+us=", - "dev": true - }, - "node_modules/regenerator-transform": { - "version": "0.9.8", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.9.8.tgz", - "integrity": "sha1-D4i7K8A5Mt23trcxLmgHjwECbWw=", + "node_modules/jest-docblock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", + "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", "dev": true, + "license": "MIT", "dependencies": { - "babel-runtime": "^6.18.0", - "babel-types": "^6.19.0", - "private": "^0.1.6" + "detect-newline": "^3.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/regex-cache": { - "version": "0.4.4", - "resolved": "http://127.0.0.1:8083/repository/npm_local/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "node_modules/jest-each": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.2.0.tgz", + "integrity": "sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ==", "dev": true, + "license": "MIT", "dependencies": { - "is-equal-shallow": "^0.1.3" + "@jest/get-type": "30.1.0", + "@jest/types": "30.2.0", + "chalk": "^4.1.2", + "jest-util": "30.2.0", + "pretty-format": "30.2.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/regexpu-core": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", - "dev": true - }, - "node_modules/regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "jsesc": "~0.5.0" + "has-flag": "^4.0.0" }, - "bin": { - "regjsparser": "bin/parser" + "engines": { + "node": ">=8" } }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "node_modules/repeat-element": { - "version": "1.1.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "node_modules/jest-environment-node": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.2.0.tgz", + "integrity": "sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA==", "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.2.0", + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-mock": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "node_modules/jest-haste-map": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", + "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "micromatch": "^4.0.8", + "walker": "^1.0.8" + }, "engines": { - "node": ">=0.10" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.3" } }, - "node_modules/repeating": { - "version": "2.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "node_modules/jest-haste-map/node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, + "license": "ISC", "dependencies": { - "is-finite": "^1.0.0" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/request": { - "version": "2.85.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/request/-/request-2.85.0.tgz", - "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dev": true, - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.6.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.1", - "forever-agent": "~0.6.1", - "form-data": "~2.3.1", - "har-validator": "~5.0.3", - "hawk": "~6.0.2", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.17", - "oauth-sign": "~0.8.2", - "performance-now": "^2.1.0", - "qs": "~6.5.1", - "safe-buffer": "^5.1.1", - "stringstream": "~0.0.5", - "tough-cookie": "~2.3.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/request-promise-core": { - "version": "1.1.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/request-promise-core/-/request-promise-core-1.1.1.tgz", - "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", + "node_modules/jest-haste-map/node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { - "lodash": "^4.13.1" + "fill-range": "^7.1.1" }, "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "request": "^2.34" + "node": ">=8" } }, - "node_modules/request-promise-native": { - "version": "1.0.5", - "resolved": "http://127.0.0.1:8083/repository/npm_local/request-promise-native/-/request-promise-native-1.0.5.tgz", - "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", - "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", + "node_modules/jest-haste-map/node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { - "request-promise-core": "1.1.1", - "stealthy-require": "^1.1.0", - "tough-cookie": ">=2.3.3" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=0.12.0" - }, - "peerDependencies": { - "request": "^2.34" + "node": ">=8" } }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "node_modules/jest-haste-map/node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=0.10.0" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/require-main-filename": { - "version": "1.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "node_modules/resolve": { - "version": "1.1.7", - "resolved": "http://127.0.0.1:8083/repository/npm_local/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - }, - "node_modules/resolve-cwd": { - "version": "2.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "node_modules/jest-haste-map/node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { - "resolve-from": "^3.0.0" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=4" + "node": ">=8.6" } }, - "node_modules/resolve-from": { + "node_modules/jest-haste-map/node_modules/normalize-path": { "version": "3.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "deprecated": "https://github.com/lydell/resolve-url#deprecated", - "dev": true - }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "http://127.0.0.1:8083/repository/npm_local/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "node_modules/jest-haste-map/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.12" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/right-align": { - "version": "0.1.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "node_modules/jest-leak-detector": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.2.0.tgz", + "integrity": "sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { - "align-text": "^0.1.1" + "@jest/get-type": "30.1.0", + "pretty-format": "30.2.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/rimraf": { - "version": "2.6.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", + "node_modules/jest-matcher-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", + "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", "dev": true, + "license": "MIT", "dependencies": { - "glob": "^7.0.5" + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.2.0", + "pretty-format": "30.2.0" }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", - "dev": true - }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "dependencies": { - "ret": "~0.1.10" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/sane": { - "version": "2.5.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/sane/-/sane-2.5.0.tgz", - "integrity": "sha512-glfKd7YH4UCrh/7dD+UESsr8ylKWRE7UQPoXuz28FgmcF0ViJQhCTCCZHICRKxf8G8O1KdLEn20dcICK54c7ew==", - "deprecated": "some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added", + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "anymatch": "^2.0.0", - "exec-sh": "^0.2.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5", - "watch": "~0.18.0" - }, - "bin": { - "sane": "src/cli.js" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.6.0" + "node": ">=8" }, - "optionalDependencies": { - "fsevents": "^1.1.1" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/sane/node_modules/anymatch": { - "version": "2.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/sane/node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true, + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/sane/node_modules/array-unique": { - "version": "0.3.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/sane/node_modules/braces": { - "version": "2.3.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/braces/-/braces-2.3.1.tgz", - "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "node_modules/jest-message-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", "dev": true, + "license": "MIT", "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "kind-of": "^6.0.2", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/sane/node_modules/braces/node_modules/define-property": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "is-descriptor": "^1.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/sane/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/jest-message-util/node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" + "fill-range": "^7.1.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/sane/node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "http://127.0.0.1:8083/repository/npm_local/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/sane/node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "http://127.0.0.1:8083/repository/npm_local/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "node_modules/jest-message-util/node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { - "is-descriptor": "^0.1.0" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/sane/node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/jest-message-util/node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.6" } }, - "node_modules/sane/node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "node_modules/jest-message-util/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/sane/node_modules/expand-brackets/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "node_modules/jest-message-util/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/sane/node_modules/extglob": { - "version": "2.0.4", - "resolved": "http://127.0.0.1:8083/repository/npm_local/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/sane/node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "node_modules/jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", "dev": true, + "license": "MIT", "dependencies": { - "is-descriptor": "^1.0.0" + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/sane/node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/sane/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "node_modules/jest-resolve": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.2.0.tgz", + "integrity": "sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A==", "dev": true, + "license": "MIT", "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-pnp-resolver": "^1.2.3", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "slash": "^3.0.0", + "unrs-resolver": "^1.7.11" }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/sane/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/jest-resolve-dependencies": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.2.0.tgz", + "integrity": "sha512-xTOIGug/0RmIe3mmCqCT95yO0vj6JURrn1TKWlNbhiAefJRWINNPgwVkrVgt/YaerPzY3iItufd80v3lOrFJ2w==", "dev": true, + "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" + "jest-regex-util": "30.0.1", + "jest-snapshot": "30.2.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/sane/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "deprecated": "Please upgrade to v0.1.7", + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/sane/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/sane/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "deprecated": "Please upgrade to v0.1.5", + "node_modules/jest-resolve/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/sane/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/sane/node_modules/is-number": { - "version": "3.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "node_modules/jest-runner": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.2.0.tgz", + "integrity": "sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "30.2.0", + "@jest/environment": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "emittery": "^0.13.1", + "exit-x": "^0.2.2", + "graceful-fs": "^4.2.11", + "jest-docblock": "30.2.0", + "jest-environment-node": "30.2.0", + "jest-haste-map": "30.2.0", + "jest-leak-detector": "30.2.0", + "jest-message-util": "30.2.0", + "jest-resolve": "30.2.0", + "jest-runtime": "30.2.0", + "jest-util": "30.2.0", + "jest-watcher": "30.2.0", + "jest-worker": "30.2.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/sane/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/sane/node_modules/isobject": { - "version": "3.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "node_modules/jest-runner/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/sane/node_modules/kind-of": { - "version": "6.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, - "engines": { - "node": ">=0.10.0" + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/sane/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "http://127.0.0.1:8083/repository/npm_local/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/sane/node_modules/minimist": { - "version": "1.2.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "http://127.0.0.1:8083/repository/npm_local/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "node_modules/semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "node_modules/jest-runtime": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.2.0.tgz", + "integrity": "sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg==", "dev": true, - "bin": { - "semver": "bin/semver" + "license": "MIT", + "dependencies": { + "@jest/environment": "30.2.0", + "@jest/fake-timers": "30.2.0", + "@jest/globals": "30.2.0", + "@jest/source-map": "30.0.1", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "cjs-module-lexer": "^2.1.0", + "collect-v8-coverage": "^1.0.2", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.2.0", + "jest-snapshot": "30.2.0", + "jest-util": "30.2.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "node_modules/set-immediate-shim": { - "version": "1.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "optional": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/set-value": { - "version": "2.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", - "deprecated": "Critical bug fixed in v3.0.1, please upgrade to the latest version.", + "node_modules/jest-runtime/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" + "balanced-match": "^1.0.0" } }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "node_modules/jest-runtime/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "dev": true, + "license": "ISC", "dependencies": { - "shebang-regex": "^1.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": ">=0.10.0" + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "node_modules/jest-runtime/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/shellwords": { - "version": "0.1.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true - }, - "node_modules/signal-exit": { - "version": "3.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "node_modules/slash": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "node_modules/jest-runtime/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "node_modules/jest-snapshot": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz", + "integrity": "sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==", "dev": true, + "license": "MIT", "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" + "@babel/core": "^7.27.4", + "@babel/generator": "^7.27.5", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1", + "@babel/types": "^7.27.3", + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "@jest/snapshot-utils": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "babel-preset-current-node-syntax": "^1.2.0", + "chalk": "^4.1.2", + "expect": "30.2.0", + "graceful-fs": "^4.2.11", + "jest-diff": "30.2.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "pretty-format": "30.2.0", + "semver": "^7.7.2", + "synckit": "^0.11.8" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "is-descriptor": "^1.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/snapdragon-node/node_modules/isobject": { - "version": "3.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, - "dependencies": { - "kind-of": "^3.2.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "http://127.0.0.1:8083/repository/npm_local/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "is-descriptor": "^0.1.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", "dev": true, + "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "deprecated": "Please upgrade to v0.1.7", + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/snapdragon/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "deprecated": "Please upgrade to v0.1.5", + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/jest-validate": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz", + "integrity": "sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==", "dev": true, + "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "@jest/get-type": "30.1.0", + "@jest/types": "30.2.0", + "camelcase": "^6.3.0", + "chalk": "^4.1.2", + "leven": "^3.1.0", + "pretty-format": "30.2.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/snapdragon/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/snapdragon/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sntp": { - "version": "2.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/sntp/-/sntp-2.1.0.tgz", - "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", - "deprecated": "This module moved to @hapi/sntp. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.", + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "hoek": "4.x.x" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "http://127.0.0.1:8083/repository/npm_local/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/source-map-resolve": { - "version": "0.5.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/source-map-resolve/-/source-map-resolve-0.5.1.tgz", - "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "node_modules/jest-watcher": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.2.0.tgz", + "integrity": "sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg==", "dev": true, + "license": "MIT", "dependencies": { - "atob": "^2.0.0", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" + "@jest/test-result": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "emittery": "^0.13.1", + "jest-util": "30.2.0", + "string-length": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/source-map-support": { - "version": "0.4.18", - "resolved": "http://127.0.0.1:8083/repository/npm_local/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "source-map": "^0.5.6" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/source-map-url": { - "version": "0.4.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "deprecated": "See https://github.com/lydell/source-map-url#deprecated", - "dev": true - }, - "node_modules/spdx-correct": { - "version": "3.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/spdx-correct/-/spdx-correct-3.0.0.tgz", - "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/spdx-exceptions": { - "version": "2.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", - "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/spdx-license-ids": { - "version": "3.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", - "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", - "dev": true - }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "node_modules/jest-worker": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", + "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", "dev": true, + "license": "MIT", "dependencies": { - "extend-shallow": "^3.0.0" + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.2.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "node_modules/sshpk": { - "version": "1.14.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/sshpk/-/sshpk-1.14.1.tgz", - "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "dashdash": "^1.12.0", - "getpass": "^0.1.1" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" }, - "optionalDependencies": { - "bcrypt-pbkdf": "^1.0.0", - "ecc-jsbn": "~0.1.1", - "jsbn": "~0.1.0", - "tweetnacl": "~0.14.0" + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/stack-utils": { - "version": "1.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/stack-utils/-/stack-utils-1.0.1.tgz", - "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, + "license": "MIT", "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "engines": { - "node": ">=0.10.0" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "http://127.0.0.1:8083/repository/npm_local/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "ISC" }, - "node_modules/static-extend/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "deprecated": "Please upgrade to v0.1.7", + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/static-extend/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "deprecated": "Please upgrade to v0.1.5", + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" } }, - "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, + "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "semver": "^7.5.3" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/static-extend/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "node_modules/make-dir/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/static-extend/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, - "engines": { - "node": ">=0.10.0" + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" } }, - "node_modules/stealthy-require": { - "version": "1.1.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" + "license": "MIT", + "engines": { + "node": ">=6" } }, - "node_modules/string-length": { - "version": "2.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/string-length/-/string-length-2.0.0.tgz", - "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { - "astral-regex": "^1.0.0", - "strip-ansi": "^4.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=4" + "node": "*" } }, - "node_modules/string-length/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { - "node": ">=4" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/string-length/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "node_modules/napi-postinstall": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", + "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" }, "engines": { - "node": ">=4" + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" } }, - "node_modules/string-width": { - "version": "2.1.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true, + "license": "MIT" + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "path-key": "^3.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, - "engines": { - "node": ">=4" + "license": "ISC", + "dependencies": { + "wrappy": "1" } }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^3.0.0" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">=4" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stringstream": { - "version": "0.0.5", - "resolved": "http://127.0.0.1:8083/repository/npm_local/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", - "dev": true - }, - "node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { - "is-utf8": "^0.2.0" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=6" } }, - "node_modules/symbol-tree": { - "version": "3.2.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/symbol-tree/-/symbol-tree-3.2.2.tgz", - "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", - "dev": true + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" }, - "node_modules/test-exclude": { - "version": "4.2.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/test-exclude/-/test-exclude-4.2.1.tgz", - "integrity": "sha512-qpqlP/8Zl+sosLxBcVKl9vYy26T9NPalxSzzCP/OY6K7j938ui2oKgo+kRZYfxAeIpLqpbVnsHq1tyV70E4lWQ==", + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, + "license": "MIT", "dependencies": { - "arrify": "^1.0.1", - "micromatch": "^3.1.8", - "object-assign": "^4.1.0", - "read-pkg-up": "^1.0.1", - "require-main-filename": "^1.0.1" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/test-exclude/node_modules/arr-diff": { + "node_modules/path-exists": { "version": "4.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/test-exclude/node_modules/array-unique": { - "version": "0.3.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/test-exclude/node_modules/braces": { - "version": "2.3.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/braces/-/braces-2.3.1.tgz", - "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "kind-of": "^6.0.2", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/test-exclude/node_modules/braces/node_modules/define-property": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/test-exclude/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "is-extendable": "^0.1.0" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/test-exclude/node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "http://127.0.0.1:8083/repository/npm_local/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "ISC" }, - "node_modules/test-exclude/node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "http://127.0.0.1:8083/repository/npm_local/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "ISC" }, - "node_modules/test-exclude/node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/test-exclude/node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/test-exclude/node_modules/expand-brackets/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/test-exclude/node_modules/extglob": { - "version": "2.0.4", - "resolved": "http://127.0.0.1:8083/repository/npm_local/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, + "license": "MIT", "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "find-up": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/test-exclude/node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", "dev": true, + "license": "MIT", "dependencies": { - "is-descriptor": "^1.0.0" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/test-exclude/node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/test-exclude/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "node_modules/pure-rand": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", + "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" }, - "node_modules/test-exclude/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/random-seed": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/random-seed/-/random-seed-0.3.0.tgz", + "integrity": "sha512-y13xtn3kcTlLub3HKWXxJNeC2qK4mB59evwZ5EkeRlolx+Bp2ztF7LbcZmyCnOqlHQrLnfuNbi1sVmm9lPDlDA==", "dev": true, + "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" + "json-stringify-safe": "^5.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.6.0" } }, - "node_modules/test-exclude/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "deprecated": "Please upgrade to v0.1.7", + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/test-exclude/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "dev": true, + "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "regenerate": "^1.4.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/test-exclude/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "deprecated": "Please upgrade to v0.1.5", + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/test-exclude/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", "dev": true, + "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/test-exclude/node_modules/is-number": { + "node_modules/resolve-cwd": { "version": "3.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "resolve-from": "^5.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/test-exclude/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/test-exclude/node_modules/isobject": { - "version": "3.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "engines": { - "node": ">=0.10.0" + "license": "ISC", + "bin": { + "semver": "bin/semver" } }, - "node_modules/test-exclude/node_modules/kind-of": { - "version": "6.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/test-exclude/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "http://127.0.0.1:8083/repository/npm_local/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/throat": { - "version": "4.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/throat/-/throat-4.1.0.tgz", - "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", - "dev": true + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" }, - "node_modules/tmpl": { - "version": "1.0.4", - "resolved": "http://127.0.0.1:8083/repository/npm_local/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", - "dev": true + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" }, - "node_modules/to-fast-properties": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.2.tgz", - "integrity": "sha1-8/XAw7pymafvmUJ+RGMyV63kMyA=", + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, + "license": "MIT", "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "node_modules/string-length/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/to-regex-range/node_modules/is-number": { - "version": "3.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "node_modules/string-length/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/tough-cookie": { - "version": "2.3.4", - "resolved": "http://127.0.0.1:8083/repository/npm_local/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { - "punycode": "^1.4.1" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=0.8" + "node": ">=8" } }, - "node_modules/tough-cookie/node_modules/punycode": { - "version": "1.4.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "node_modules/tr46": { - "version": "1.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { - "punycode": "^2.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/trim-right": { - "version": "1.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { - "safe-buffer": "^5.0.1" + "ansi-regex": "^5.0.1" }, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "http://127.0.0.1:8083/repository/npm_local/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "node_modules/string-width/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "optional": true + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "node_modules/string-width/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { - "prelude-ls": "~1.1.2" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/uglify-js": { - "version": "2.8.29", - "resolved": "http://127.0.0.1:8083/repository/npm_local/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { - "source-map": "~0.5.1", - "yargs": "~3.10.0" - }, - "bin": { - "uglifyjs": "bin/uglifyjs" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=0.8.0" - }, - "optionalDependencies": { - "uglify-to-browserify": "~1.0.0" + "node": ">=8" } }, - "node_modules/uglify-js/node_modules/yargs": { - "version": "3.10.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "optional": true, - "dependencies": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/uglify-to-browserify": { - "version": "1.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true, - "optional": true - }, - "node_modules/union-value": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/union-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/union-value/node_modules/set-value": { - "version": "0.4.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "deprecated": "Critical bug fixed in v3.0.1, please upgrade to the latest version.", + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/unset-value": { + "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "node_modules/synckit": { + "version": "0.11.12", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", + "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", "dev": true, + "license": "MIT", "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" + "@pkgr/core": "^0.2.9" }, "engines": { - "node": ">=0.10.0" + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" } }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, + "license": "ISC", "dependencies": { - "isarray": "1.0.0" + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "http://127.0.0.1:8083/repository/npm_local/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "BSD-3-Clause" }, - "node_modules/unset-value/node_modules/isobject": { - "version": "3.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8.0" } }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "dev": true - }, - "node_modules/use": { - "version": "3.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/use/-/use-3.1.0.tgz", - "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", + "node_modules/to-regex-range/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=0.12.0" } }, - "node_modules/use/node_modules/kind-of": { - "version": "6.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD", + "optional": true + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/user-home": { - "version": "1.1.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/user-home/-/user-home-1.1.1.tgz", - "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, - "bin": { - "user-home": "cli.js" - }, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "node_modules/util.promisify": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", "dev": true, - "dependencies": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } + "license": "MIT" }, - "node_modules/uuid": { - "version": "3.2.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", "dev": true, - "bin": { - "uuid": "bin/uuid" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "node_modules/v8flags": { - "version": "2.1.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/v8flags/-/v8flags-2.1.1.tgz", - "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, + "license": "MIT", "dependencies": { - "user-home": "^1.1.1" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" }, "engines": { - "node": ">= 0.10.0" + "node": ">=4" } }, - "node_modules/validate-npm-package-license": { - "version": "3.0.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", - "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "node_modules/w3c-hr-time": { - "version": "1.0.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", - "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", - "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "node_modules/unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", "dev": true, + "hasInstallScript": true, + "license": "MIT", "dependencies": { - "browser-process-hrtime": "^0.1.2" - } + "napi-postinstall": "^0.3.0" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" + } + }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "license": "ISC", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" }, "node_modules/walker": { - "version": "1.0.7", - "resolved": "http://127.0.0.1:8083/repository/npm_local/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "makeerror": "1.0.x" + "makeerror": "1.0.12" } }, - "node_modules/watch": { - "version": "0.18.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/watch/-/watch-0.18.0.tgz", - "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { - "exec-sh": "^0.2.0", - "minimist": "^1.2.0" + "isexe": "^2.0.0" }, "bin": { - "watch": "cli.js" + "node-which": "bin/node-which" }, "engines": { - "node": ">=0.1.95" - } - }, - "node_modules/watch/node_modules/minimist": { - "version": "1.2.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "node_modules/whatwg-encoding": { - "version": "1.0.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz", - "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==", - "dev": true, - "dependencies": { - "iconv-lite": "0.4.19" + "node": ">= 8" } }, - "node_modules/whatwg-mimetype": { - "version": "2.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/whatwg-mimetype/-/whatwg-mimetype-2.1.0.tgz", - "integrity": "sha512-FKxhYLytBQiUKjkYteN71fAUA3g6KpNXoho1isLiLSB3N1G4F35Q5vUxWfKFhBwi5IWF27VE6WxhrnnC+m0Mew==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "6.4.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/whatwg-url/-/whatwg-url-6.4.0.tgz", - "integrity": "sha512-Z0CVh/YE217Foyb488eo+iBv+r7eAQ0wSTyApi9n06jhcA3z6Nidg/EGvl0UFkg7kMdKxfBzzr+o9JF+cevgMg==", + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.0", - "webidl-conversions": "^4.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/which": { - "version": "1.3.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { - "isexe": "^2.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, - "bin": { - "which": "bin/which" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "node_modules/window-size": { - "version": "0.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "optional": true, + "license": "MIT", "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/wordwrap": { - "version": "0.0.3", - "resolved": "http://127.0.0.1:8083/repository/npm_local/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=0.4.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "number-is-nan": "^1.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "1.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/wrappy": { "version": "1.0.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" }, "node_modules/write-file-atomic": { - "version": "2.3.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/write-file-atomic/-/write-file-atomic-2.3.0.tgz", - "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "dev": true, + "license": "ISC", "dependencies": { - "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/ws": { + "node_modules/write-file-atomic/node_modules/signal-exit": { "version": "4.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/ws/-/ws-4.1.0.tgz", - "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "dependencies": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0" + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, "node_modules/y18n": { - "version": "3.2.1", - "resolved": "http://127.0.0.1:8083/repository/npm_local/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } }, "node_modules/yallist": { - "version": "2.1.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" }, "node_modules/yargs": { - "version": "10.1.2", - "resolved": "http://127.0.0.1:8083/repository/npm_local/yargs/-/yargs-10.1.2.tgz", - "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, + "license": "MIT", "dependencies": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^8.1.0" + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" } }, "node_modules/yargs-parser": { - "version": "8.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/yargs-parser/-/yargs-parser-8.1.0.tgz", - "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", - "dev": true, - "dependencies": { - "camelcase": "^4.1.0" - } - }, - "node_modules/yargs-parser/node_modules/camelcase": { - "version": "4.1.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, + "license": "ISC", "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" - } - }, - "node_modules/yargs/node_modules/cliui": { - "version": "4.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/cliui/-/cliui-4.0.0.tgz", - "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", - "dev": true, - "dependencies": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "http://127.0.0.1:8083/repository/npm_local/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" + "node": ">=10" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } } } diff --git a/package.json b/package.json index 6c6fe88..153cc2a 100644 --- a/package.json +++ b/package.json @@ -27,11 +27,12 @@ "test": "jest" }, "devDependencies": { - "babel-cli": "^6.26.0", - "babel-plugin-transform-flow-strip-types": "^6.22.0", - "babel-preset-env": "^1.6.1", - "flow-bin": "^0.61.0", - "jest": "^22.4.3", + "@babel/cli": "^7.26.4", + "@babel/core": "^7.26.9", + "@babel/plugin-transform-flow-strip-types": "^7.26.5", + "@babel/preset-env": "^7.26.9", + "flow-bin": "^0.297.0", + "jest": "^30.2.0", "random-seed": "^0.3.0" }, "homepage": "https://github.com/samothx/AisParser#readme", @@ -41,8 +42,10 @@ }, "dependencies": {}, "author": "Thomas Runte (http://www.etnur.net)", - "jest" : { - "testPathIgnorePatterns" : ["/node_modules/","/testHelper/"], - "testURL": "http://localhost/" + "jest": { + "testPathIgnorePatterns": ["/node_modules/", "/testHelper/"], + "testEnvironmentOptions": { + "url": "http://localhost/" + } } } From 369d759fd8d40a7c58bcc8afe7771331a17749c6 Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Tue, 20 Jan 2026 18:02:20 +0100 Subject: [PATCH 30/33] build --- lib/Ais04Msg.js | 101 ++-- lib/Ais05Msg.js | 129 ++--- lib/Ais08Msg.js | 167 +++--- lib/Ais08MsgDac1Fid21.js | 490 ++++++++-------- lib/Ais08MsgDac1Fid29.js | 182 +++--- lib/Ais08MsgDac1Fid30.js | 244 ++++---- lib/Ais08MsgDac1Fid31.js | 1103 +++++++++++++++++------------------- lib/Ais08MsgDac200Fid10.js | 280 +++++---- lib/Ais08MsgDac367Fid23.js | 317 +++++------ lib/Ais08MsgDac367Fid24.js | 240 ++++---- lib/Ais09Msg.js | 196 +++---- lib/Ais14Msg.js | 143 +++-- lib/Ais18Msg.js | 124 ++-- lib/Ais19Msg.js | 171 +++--- lib/Ais21Msg.js | 172 +++--- lib/Ais24Msg.js | 173 +++--- lib/Ais27Msg.js | 184 +++--- lib/AisBitField.js | 103 ++-- lib/AisCNBMsg.js | 138 ++--- lib/AisMessage.js | 404 ++++++------- lib/AisParser.js | 219 +++---- 21 files changed, 2376 insertions(+), 2904 deletions(-) diff --git a/lib/Ais04Msg.js b/lib/Ais04Msg.js index 08877fd..9d67546 100644 --- a/lib/Ais04Msg.js +++ b/lib/Ais04Msg.js @@ -1,28 +1,25 @@ -'use strict'; +"use strict"; +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } Object.defineProperty(exports, "__esModule", { value: true }); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _AisBitField = require('./AisBitField'); - -var _AisBitField2 = _interopRequireDefault(_AisBitField); - -var _AisMessage2 = require('./AisMessage'); - -var _AisMessage3 = _interopRequireDefault(_AisMessage2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/* +exports["default"] = void 0; +var _AisBitField = _interopRequireDefault(require("./AisBitField")); +var _AisMessage2 = _interopRequireDefault(require("./AisMessage")); +function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } /* * AisParser: A parser for NMEA0183 AIS messages. * Copyright (C) 2017 Thomas Runte . * @@ -38,10 +35,8 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" * You should have received a copy of the Apache License Version 2.0 * along with this program. If not, see . */ - var MOD_NAME = 'Ais04Msg'; var SUPPORTED_FIELDS = ['aisType', 'channel', 'repeatInd', 'mmsi', 'midCountry', 'midCountryIso', 'mmsiType', 'latitude', 'longitude', 'posAccuracy', 'utcYear', 'utcMonth', 'utcDay', 'utcHour', 'utcMinute', 'utcSecond', 'epfd']; - var suppValuesValid = false; var suppValues = {}; @@ -67,16 +62,12 @@ var suppValues = {}; |149-167 | 19 |SOTDMA state |radio |u|As in same bits for Type 1 |============================================================================== */ - -var Ais04Msg = function (_AisMessage) { - _inherits(Ais04Msg, _AisMessage); - +var Ais04Msg = exports["default"] = /*#__PURE__*/function (_AisMessage) { function Ais04Msg(aisType, bitField, channel) { + var _this; _classCallCheck(this, Ais04Msg); - + _this = _callSuper(this, Ais04Msg, [aisType, bitField, channel]); // TODO: check bitcount - var _this = _possibleConstructorReturn(this, (Ais04Msg.__proto__ || Object.getPrototypeOf(Ais04Msg)).call(this, aisType, bitField, channel)); - if (bitField.bits >= 167) { _this._valid = 'VALID'; } else { @@ -85,23 +76,13 @@ var Ais04Msg = function (_AisMessage) { } return _this; } - - _createClass(Ais04Msg, [{ - key: '_getRawLat', - value: function _getRawLat() { - return this._bitField.getInt(107, 27, false); - } - }, { - key: '_getRawLon', - value: function _getRawLon() { - return this._bitField.getInt(79, 28, false); - } - }, { - key: 'supportedValues', + _inherits(Ais04Msg, _AisMessage); + return _createClass(Ais04Msg, [{ + key: "supportedValues", get: function get() { if (!suppValuesValid) { SUPPORTED_FIELDS.forEach(function (field) { - var unit = _AisMessage3.default.getUnit(field); + var unit = _AisMessage2["default"].getUnit(field); if (unit) { suppValues[field] = unit; } else { @@ -113,48 +94,54 @@ var Ais04Msg = function (_AisMessage) { return suppValues; } }, { - key: 'utcYear', + key: "utcYear", get: function get() { return this._bitField.getInt(38, 14, true); } }, { - key: 'utcMonth', + key: "utcMonth", get: function get() { return this._bitField.getInt(52, 4, true); } }, { - key: 'utcDay', + key: "utcDay", get: function get() { return this._bitField.getInt(56, 5, true); } }, { - key: 'utcHour', + key: "utcHour", get: function get() { return this._bitField.getInt(61, 5, true); } }, { - key: 'utcMinute', + key: "utcMinute", get: function get() { return this._bitField.getInt(66, 6, true); } }, { - key: 'utcSecond', + key: "utcSecond", get: function get() { return this._bitField.getInt(72, 6, true); } }, { - key: 'posAccuracy', + key: "posAccuracy", get: function get() { return this._bitField.getInt(78, 1, true) === 1; } }, { - key: 'epfd', + key: "_getRawLat", + value: function _getRawLat() { + return this._bitField.getInt(107, 27, false); + } + }, { + key: "_getRawLon", + value: function _getRawLon() { + return this._bitField.getInt(79, 28, false); + } + }, { + key: "epfd", get: function get() { return this._bitField.getInt(134, 4, true); } }]); - - return Ais04Msg; -}(_AisMessage3.default); - -exports.default = Ais04Msg; +}(_AisMessage2["default"]); diff --git a/lib/Ais05Msg.js b/lib/Ais05Msg.js index 4ef5f02..ca14268 100644 --- a/lib/Ais05Msg.js +++ b/lib/Ais05Msg.js @@ -1,28 +1,25 @@ -'use strict'; +"use strict"; +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } Object.defineProperty(exports, "__esModule", { value: true }); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _AisBitField = require('./AisBitField'); - -var _AisBitField2 = _interopRequireDefault(_AisBitField); - -var _AisMessage2 = require('./AisMessage'); - -var _AisMessage3 = _interopRequireDefault(_AisMessage2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/* +exports["default"] = void 0; +var _AisBitField = _interopRequireDefault(require("./AisBitField")); +var _AisMessage2 = _interopRequireDefault(require("./AisMessage")); +function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } /* * AisParser: A parser for NMEA0183 AIS messages. * Copyright (C) 2017 Thomas Runte . * @@ -38,10 +35,8 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" * You should have received a copy of the Apache License Version 2.0 * along with this program. If not, see . */ - var MOD_NAME = 'Ais05Msg'; var SUPPORTED_FIELDS = ['aisType', 'channel', 'repeatInd', 'mmsi', 'midCountry', 'midCountryIso', 'mmsiType', 'callSign', 'name', 'aisVer', 'imo', 'shipType', 'shipTypeStr', 'dimToBow', 'dimToBowStatus', 'dimToStern', 'dimToSternStatus', 'dimToPort', 'dimToPortStatus', 'dimToStbrd', 'dimToStbrdStatus', 'epfd', 'epfdStr', 'etaMonth', 'etaDay', 'etaHour', 'etaMinute', 'draught', 'destination']; - var suppValuesValid = false; var suppValues = {}; @@ -74,15 +69,11 @@ TODO: |423-423 | 1 |Spare | |x|Not used |============================================================================== */ - -var Ais05Msg = function (_AisMessage) { - _inherits(Ais05Msg, _AisMessage); - +var Ais05Msg = exports["default"] = /*#__PURE__*/function (_AisMessage) { function Ais05Msg(aisType, bitField, channel) { + var _this; _classCallCheck(this, Ais05Msg); - - var _this = _possibleConstructorReturn(this, (Ais05Msg.__proto__ || Object.getPrototypeOf(Ais05Msg)).call(this, aisType, bitField, channel)); - + _this = _callSuper(this, Ais05Msg, [aisType, bitField, channel]); if (bitField.bits >= 423) { _this._valid = 'VALID'; } else { @@ -91,33 +82,13 @@ var Ais05Msg = function (_AisMessage) { } return _this; } - - _createClass(Ais05Msg, [{ - key: '_getDimToBow', - value: function _getDimToBow() { - return this._bitField.getInt(240, 9, true); - } - }, { - key: '_getDimToStern', - value: function _getDimToStern() { - return this._bitField.getInt(249, 9, true); - } - }, { - key: '_getDimToPort', - value: function _getDimToPort() { - return this._bitField.getInt(258, 6, true); - } - }, { - key: '_getDimToStbrd', - value: function _getDimToStbrd() { - return this._bitField.getInt(264, 6, true); - } - }, { - key: 'supportedValues', + _inherits(Ais05Msg, _AisMessage); + return _createClass(Ais05Msg, [{ + key: "supportedValues", get: function get() { if (!suppValuesValid) { SUPPORTED_FIELDS.forEach(function (field) { - var unit = _AisMessage3.default.getUnit(field); + var unit = _AisMessage2["default"].getUnit(field); if (unit) { suppValues[field] = unit; } else { @@ -129,68 +100,84 @@ var Ais05Msg = function (_AisMessage) { return suppValues; } }, { - key: 'callSign', + key: "callSign", get: function get() { return this._formatStr(this._bitField.getString(70, 42)); } }, { - key: 'name', + key: "name", get: function get() { return this._formatStr(this._bitField.getString(112, 120)); } }, { - key: 'aisVer', + key: "aisVer", get: function get() { return this._bitField.getInt(38, 2, true); } }, { - key: 'imo', + key: "imo", get: function get() { return this._bitField.getInt(40, 30, true); } }, { - key: 'shipType', + key: "shipType", get: function get() { return this._bitField.getInt(232, 8, true); } }, { - key: 'epfd', + key: "_getDimToBow", + value: function _getDimToBow() { + return this._bitField.getInt(240, 9, true); + } + }, { + key: "_getDimToStern", + value: function _getDimToStern() { + return this._bitField.getInt(249, 9, true); + } + }, { + key: "_getDimToPort", + value: function _getDimToPort() { + return this._bitField.getInt(258, 6, true); + } + }, { + key: "_getDimToStbrd", + value: function _getDimToStbrd() { + return this._bitField.getInt(264, 6, true); + } + }, { + key: "epfd", get: function get() { return this._bitField.getInt(270, 4, true); } }, { - key: 'etaMonth', + key: "etaMonth", get: function get() { return this._bitField.getInt(274, 4, true) || NaN; } }, { - key: 'etaDay', + key: "etaDay", get: function get() { return this._bitField.getInt(278, 5, true) || NaN; } }, { - key: 'etaHour', + key: "etaHour", get: function get() { return this._bitField.getInt(283, 5, true) || NaN; } }, { - key: 'etaMinute', + key: "etaMinute", get: function get() { return this._bitField.getInt(288, 6, true) || NaN; } }, { - key: 'draught', + key: "draught", get: function get() { return this._bitField.getInt(294, 8, true) / 10; } }, { - key: 'destination', + key: "destination", get: function get() { return this._formatStr(this._bitField.getString(302, 120)); } }]); - - return Ais05Msg; -}(_AisMessage3.default); - -exports.default = Ais05Msg; +}(_AisMessage2["default"]); diff --git a/lib/Ais08Msg.js b/lib/Ais08Msg.js index 23f98a5..b50c80c 100644 --- a/lib/Ais08Msg.js +++ b/lib/Ais08Msg.js @@ -1,28 +1,25 @@ -'use strict'; +"use strict"; +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } Object.defineProperty(exports, "__esModule", { - value: true + value: true }); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _AisBitField = require('./AisBitField'); - -var _AisBitField2 = _interopRequireDefault(_AisBitField); - -var _AisMessage2 = require('./AisMessage'); - -var _AisMessage3 = _interopRequireDefault(_AisMessage2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/* +exports["default"] = void 0; +var _AisBitField = _interopRequireDefault(require("./AisBitField")); +var _AisMessage2 = _interopRequireDefault(require("./AisMessage")); +function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } /* * AisParser: A parser for NMEA0183 AIS messages. * Copyright (C) 2025 Davide Gessa . * @@ -38,11 +35,8 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" * You should have received a copy of the Apache License Version 2.0 * along with this program. If not, see . */ - var MOD_NAME = 'Ais8Msg'; - var SUPPORTED_FIELDS = ['aisType', 'channel', 'repeatInd', 'mmsi', 'dac', 'fid', 'data']; - var suppValuesValid = false; var suppValues = {}; @@ -58,74 +52,63 @@ var suppValues = {}; |56-... | <=952 |Application specific data|data |t|binary data |============================================================================== */ - -var Ais8Msg = function (_AisMessage) { - _inherits(Ais8Msg, _AisMessage); - - function Ais8Msg(aisType, bitField, channel) { - _classCallCheck(this, Ais8Msg); - - var _this = _possibleConstructorReturn(this, (Ais8Msg.__proto__ || Object.getPrototypeOf(Ais8Msg)).call(this, aisType, bitField, channel)); - - if (bitField.bits >= 56 && bitField.bits <= 1008) { - _this._valid = 'VALID'; - } else { - _this._valid = 'INVALID'; - _this._errMsg = 'invalid bitcount for type 8 msg:' + bitField.bits; - } - return _this; +var Ais8Msg = exports["default"] = /*#__PURE__*/function (_AisMessage) { + function Ais8Msg(aisType, bitField, channel) { + var _this; + _classCallCheck(this, Ais8Msg); + _this = _callSuper(this, Ais8Msg, [aisType, bitField, channel]); + if (bitField.bits >= 56 && bitField.bits <= 1008) { + _this._valid = 'VALID'; + } else { + _this._valid = 'INVALID'; + _this._errMsg = 'invalid bitcount for type 8 msg:' + bitField.bits; + } + return _this; + } + _inherits(Ais8Msg, _AisMessage); + return _createClass(Ais8Msg, [{ + key: "class", + get: function get() { + return 'A'; + } + }, { + key: "supportedValues", + get: function get() { + if (!suppValuesValid) { + SUPPORTED_FIELDS.forEach(function (field) { + var unit = _AisMessage2["default"].getUnit(field); + if (unit) { + suppValues[field] = unit; + } else { + console.warn(MOD_NAME + 'field without unit encountered:' + field); + } + }); + suppValuesValid = true; + } + return suppValues; } - _createClass(Ais8Msg, [{ - key: 'class', - get: function get() { - return 'A'; - } - }, { - key: 'supportedValues', - get: function get() { - if (!suppValuesValid) { - SUPPORTED_FIELDS.forEach(function (field) { - var unit = _AisMessage3.default.getUnit(field); - if (unit) { - suppValues[field] = unit; - } else { - console.warn(MOD_NAME + 'field without unit encountered:' + field); - } - }); - suppValuesValid = true; - } - return suppValues; - } - - // |40-49 | 10 |Designated area code |dac |u| - - }, { - key: 'dac', - get: function get() { - return this._bitField.getInt(40, 10, true); - } - - // |50-55 | 6 |Function identifier |fid |u| - - }, { - key: 'fid', - get: function get() { - return this._bitField.getInt(50, 6, true); - } - - // |56-... | <=952 |Name |text |s|max of 952 binary data - - }, { - key: 'data', - get: function get() { - var dataStart = 56; - var maxDataBits = Math.min(this._bitField.bits - dataStart, 952); - return this._bitField.getBytes(dataStart, maxDataBits); - } - }]); + // |40-49 | 10 |Designated area code |dac |u| + }, { + key: "dac", + get: function get() { + return this._bitField.getInt(40, 10, true); + } - return Ais8Msg; -}(_AisMessage3.default); + // |50-55 | 6 |Function identifier |fid |u| + }, { + key: "fid", + get: function get() { + return this._bitField.getInt(50, 6, true); + } -exports.default = Ais8Msg; + // |56-... | <=952 |Name |text |s|max of 952 binary data + }, { + key: "data", + get: function get() { + var dataStart = 56; + var maxDataBits = Math.min(this._bitField.bits - dataStart, 952); + return this._bitField.getBytes(dataStart, maxDataBits); + } + }]); +}(_AisMessage2["default"]); diff --git a/lib/Ais08MsgDac1Fid21.js b/lib/Ais08MsgDac1Fid21.js index 5ab3e2e..804a0c2 100644 --- a/lib/Ais08MsgDac1Fid21.js +++ b/lib/Ais08MsgDac1Fid21.js @@ -1,28 +1,25 @@ -'use strict'; +"use strict"; +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } Object.defineProperty(exports, "__esModule", { - value: true + value: true }); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _AisBitField = require('./AisBitField'); - -var _AisBitField2 = _interopRequireDefault(_AisBitField); - -var _AisMessage2 = require('./AisMessage'); - -var _AisMessage3 = _interopRequireDefault(_AisMessage2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/* +exports["default"] = void 0; +var _AisBitField = _interopRequireDefault(require("./AisBitField")); +var _AisMessage2 = _interopRequireDefault(require("./AisMessage")); +function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } /* * AisParser: A parser for NMEA0183 AIS messages. * Copyright (C) 2025 Davide Gessa . * @@ -38,11 +35,8 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" * You should have received a copy of the Apache License Version 2.0 * along with this program. If not, see . */ - var MOD_NAME = 'Ais8MsgDac1Fid21'; - var SUPPORTED_FIELDS = ['aisType', 'channel', 'repeatInd', 'mmsi', 'dac', 'fid', 'reportType', 'location', 'longitude', 'latitude', 'utcDay', 'utcHour', 'utcMinute', 'presentWeather', 'horizontalVisibility', 'relativeHumidity', 'avgWindSpeed', 'avgWindDirection', 'airPressure', 'airPressureTendency', 'airTemperature', 'waterTemperature', 'sigWaveHeight', 'waveDirection', 'swellHeight', 'swellPeriod', 'swellDirection']; - var suppValuesValid = false; var suppValues = {}; @@ -80,267 +74,235 @@ var suppValues = {}; |357-359 | 3 |Spare | |u |Not used, set to zero |============================================================================== */ - -var Ais8MsgDac1Fid31 = function (_AisMessage) { - _inherits(Ais8MsgDac1Fid31, _AisMessage); - - function Ais8MsgDac1Fid31(aisType, bitField, channel) { - _classCallCheck(this, Ais8MsgDac1Fid31); - - var _this = _possibleConstructorReturn(this, (Ais8MsgDac1Fid31.__proto__ || Object.getPrototypeOf(Ais8MsgDac1Fid31)).call(this, aisType, bitField, channel)); - - if (bitField.bits == 360) { - _this._valid = 'VALID'; - } else if (bitField.getInt(56, 1, true) != 0) { - _this._valid = 'UNSUPPORTED'; - _this._errMsg = 'invalid report type; WMO weather report are not supported'; - } else { - _this._valid = 'INVALID'; - _this._errMsg = 'invalid bitcount for type 8 msg dac 1 fid 31:' + bitField.bits; - } - return _this; +var Ais8MsgDac1Fid31 = exports["default"] = /*#__PURE__*/function (_AisMessage) { + function Ais8MsgDac1Fid31(aisType, bitField, channel) { + var _this; + _classCallCheck(this, Ais8MsgDac1Fid31); + _this = _callSuper(this, Ais8MsgDac1Fid31, [aisType, bitField, channel]); + if (bitField.bits == 360) { + _this._valid = 'VALID'; + } else if (bitField.getInt(56, 1, true) != 0) { + _this._valid = 'UNSUPPORTED'; + _this._errMsg = 'invalid report type; WMO weather report are not supported'; + } else { + _this._valid = 'INVALID'; + _this._errMsg = 'invalid bitcount for type 8 msg dac 1 fid 31:' + bitField.bits; + } + return _this; + } + _inherits(Ais8MsgDac1Fid31, _AisMessage); + return _createClass(Ais8MsgDac1Fid31, [{ + key: "class", + get: function get() { + return 'A'; + } + }, { + key: "supportedValues", + get: function get() { + if (!suppValuesValid) { + SUPPORTED_FIELDS.forEach(function (field) { + var unit = _AisMessage2["default"].getUnit(field); + if (unit) { + suppValues[field] = unit; + } else { + console.warn(MOD_NAME + 'field without unit encountered:' + field); + } + }); + suppValuesValid = true; + } + return suppValues; } - _createClass(Ais8MsgDac1Fid31, [{ - key: '_getRawLon', - - - // |177-201 | 25 |Longitude |lon |I4| Long in 1/1000 min, 2's complement - value: function _getRawLon() { - return this._bitField.getInt(177, 25, false) * 10; - } - - // |202-225 | 24 |Latitude |lat |I4| Lat in 1/1000 min, 2's complement - - }, { - key: '_getRawLat', - value: function _getRawLat() { - return this._bitField.getInt(202, 24, false) * 10; - } - - // |226-230 | 5 |Day (UTC) |day |u|1-31; 0 = N/A - - }, { - key: 'class', - get: function get() { - return 'A'; - } - }, { - key: 'supportedValues', - get: function get() { - if (!suppValuesValid) { - SUPPORTED_FIELDS.forEach(function (field) { - var unit = _AisMessage3.default.getUnit(field); - if (unit) { - suppValues[field] = unit; - } else { - console.warn(MOD_NAME + 'field without unit encountered:' + field); - } - }); - suppValuesValid = true; - } - return suppValues; - } - - // |40-49 | 10 |Designated area code |dac |u| - - }, { - key: 'dac', - get: function get() { - return this._bitField.getInt(40, 10, true); - } - - // |50-55 | 6 |Function identifier |fid |u| - - }, { - key: 'fid', - get: function get() { - return this._bitField.getInt(50, 6, true); - } - - // |56 | 1 |Type of report |rep_type |u| 1=WMO weather report 0=ship report - - }, { - key: 'repType', - get: function get() { - return this._bitField.getInt(56, 1, true); - } - - // |57-176 | 120 |Geographic Location |location |t|6 bit ascii 20 char - - }, { - key: 'location', - get: function get() { - return this._bitField.getString(57, 120); - } - }, { - key: 'day', - get: function get() { - var v = this._bitField.getInt(226, 5, true); - return v === 0 ? NaN : v; - } - - // |231-235 | 5 |Hour (UTC) |hour |u|0-23; 24 = N/A - - }, { - key: 'hour', - get: function get() { - var v = this._bitField.getInt(231, 5, true); - return v >= 24 ? NaN : v; - } - - // |236-241 | 6 |Minute (UTC) |minute |u|0-59; 60 = N/A - - }, { - key: 'minute', - get: function get() { - var v = this._bitField.getInt(236, 6, true); - return v >= 60 ? NaN : v; - } - - // |242-245 | 4 |Present weather |present_weather |u|WMO Code 45501, 8 = N/A - - }, { - key: 'presentWeather', - get: function get() { - var v = this._bitField.getInt(242, 4, true); - return v === 8 ? NaN : v; - } - - // |246-253 | 8 |Horizontal Visibility |horiz_visibility |u|0–126 (0.1 NM), 127=N/A - - }, { - key: 'horizVisibility', - get: function get() { - var v = this._bitField.getInt(246, 8, true); - return v >= 127 ? NaN : v / 10.0; - } - - // |254-260 | 7 |Relative Humidity |rel_humidity |u|0–100%, 101=N/A - - }, { - key: 'relHumidity', - get: function get() { - var v = this._bitField.getInt(254, 7, true); - return v >= 101 ? NaN : v; - } - - // |261-267 | 7 |Avg 10-min wind speed |avg_wind_speed |u|0-125 kt; 127=N/A - - }, { - key: 'avgWindSpeed', - get: function get() { - var v = this._bitField.getInt(261, 7, true); - return v >= 127 ? NaN : v; - } - - // |268-276 | 9 |Avg 10-min wind direction|avg_wind_dir |u|0-359°, 360=N/A + // |40-49 | 10 |Designated area code |dac |u| + }, { + key: "dac", + get: function get() { + return this._bitField.getInt(40, 10, true); + } - }, { - key: 'avgWindDir', - get: function get() { - var v = this._bitField.getInt(268, 9, true); - return v >= 360 ? NaN : v; - } + // |50-55 | 6 |Function identifier |fid |u| + }, { + key: "fid", + get: function get() { + return this._bitField.getInt(50, 6, true); + } - // |277-285 | 9 |Air Pressure |air_pressure |u| - // 0=799 or less, 1–401=800–1200, 402=1201+, 403–511=N/A + // |56 | 1 |Type of report |rep_type |u| 1=WMO weather report 0=ship report + }, { + key: "repType", + get: function get() { + return this._bitField.getInt(56, 1, true); + } - }, { - key: 'airPressure', - get: function get() { - var v = this._bitField.getInt(277, 9, true); - if (v === 0) return 799; - if (v === 402) return 1201; - if (v >= 403) return NaN; - return 800 + v; - } + // |57-176 | 120 |Geographic Location |location |t|6 bit ascii 20 char + }, { + key: "location", + get: function get() { + return this._bitField.getString(57, 120); + } - // |286-289 | 4 |Air Pressure Tendency |air_press_tend |u|WMO FM13 + // |177-201 | 25 |Longitude |lon |I4| Long in 1/1000 min, 2's complement + }, { + key: "_getRawLon", + value: function _getRawLon() { + return this._bitField.getInt(177, 25, false) * 10; + } - }, { - key: 'airPressTendRaw', - get: function get() { - var v = this._bitField.getInt(286, 4, true); - return v > 8 ? NaN : v; - } + // |202-225 | 24 |Latitude |lat |I4| Lat in 1/1000 min, 2's complement + }, { + key: "_getRawLat", + value: function _getRawLat() { + return this._bitField.getInt(202, 24, false) * 10; + } - // |290-300 | 11 |Air Temperature |air_temp |I4|0.1°C, -60.0..+60.0, -1024=N/A + // |226-230 | 5 |Day (UTC) |day |u|1-31; 0 = N/A + }, { + key: "day", + get: function get() { + var v = this._bitField.getInt(226, 5, true); + return v === 0 ? NaN : v; + } - }, { - key: 'airTemp', - get: function get() { - var v = this._bitField.getInt(290, 11, false); - if (v === -1024) return NaN; - return v / 10.0; - } + // |231-235 | 5 |Hour (UTC) |hour |u|0-23; 24 = N/A + }, { + key: "hour", + get: function get() { + var v = this._bitField.getInt(231, 5, true); + return v >= 24 ? NaN : v; + } - // |301-310 | 10 |Water Temperature |water_temp |I4|-10.0..+50.0, 0.1°C, 501=N/A + // |236-241 | 6 |Minute (UTC) |minute |u|0-59; 60 = N/A + }, { + key: "minute", + get: function get() { + var v = this._bitField.getInt(236, 6, true); + return v >= 60 ? NaN : v; + } - }, { - key: 'waterTemp', - get: function get() { - var v = this._bitField.getInt(301, 10, false); - if (v >= 501) return NaN; - return v / 10.0; - } + // |242-245 | 4 |Present weather |present_weather |u|WMO Code 45501, 8 = N/A + }, { + key: "presentWeather", + get: function get() { + var v = this._bitField.getInt(242, 4, true); + return v === 8 ? NaN : v; + } - // |311-316 | 6 |Wave Period |wave_period |u|0–60 s, 61=N/A + // |246-253 | 8 |Horizontal Visibility |horiz_visibility |u|0–126 (0.1 NM), 127=N/A + }, { + key: "horizVisibility", + get: function get() { + var v = this._bitField.getInt(246, 8, true); + return v >= 127 ? NaN : v / 10.0; + } - }, { - key: 'wavePeriod', - get: function get() { - var v = this._bitField.getInt(311, 6, true); - return v >= 61 ? NaN : v; - } + // |254-260 | 7 |Relative Humidity |rel_humidity |u|0–100%, 101=N/A + }, { + key: "relHumidity", + get: function get() { + var v = this._bitField.getInt(254, 7, true); + return v >= 101 ? NaN : v; + } - // |317-324 | 8 |Significant Wave Height |sig_wave_height |u|0–251 (0.1 m), 251=N/A + // |261-267 | 7 |Avg 10-min wind speed |avg_wind_speed |u|0-125 kt; 127=N/A + }, { + key: "avgWindSpeed", + get: function get() { + var v = this._bitField.getInt(261, 7, true); + return v >= 127 ? NaN : v; + } - }, { - key: 'sigWaveHeight', - get: function get() { - var v = this._bitField.getInt(317, 8, true); - return v >= 251 ? NaN : v / 10.0; - } + // |268-276 | 9 |Avg 10-min wind direction|avg_wind_dir |u|0-359°, 360=N/A + }, { + key: "avgWindDir", + get: function get() { + var v = this._bitField.getInt(268, 9, true); + return v >= 360 ? NaN : v; + } - // |325-333 | 9 |Wave Direction |wave_dir |u|0–359°, 360=N/A + // |277-285 | 9 |Air Pressure |air_pressure |u| + // 0=799 or less, 1–401=800–1200, 402=1201+, 403–511=N/A + }, { + key: "airPressure", + get: function get() { + var v = this._bitField.getInt(277, 9, true); + if (v === 0) return 799; + if (v === 402) return 1201; + if (v >= 403) return NaN; + return 800 + v; + } - }, { - key: 'waveDir', - get: function get() { - var v = this._bitField.getInt(325, 9, true); - return v >= 360 ? NaN : v; - } + // |286-289 | 4 |Air Pressure Tendency |air_press_tend |u|WMO FM13 + }, { + key: "airPressTendRaw", + get: function get() { + var v = this._bitField.getInt(286, 4, true); + return v > 8 ? NaN : v; + } - // |334-341 | 8 |Swell Height |swell_height |u|0–251 (0.1 m), 251=N/A + // |290-300 | 11 |Air Temperature |air_temp |I4|0.1°C, -60.0..+60.0, -1024=N/A + }, { + key: "airTemp", + get: function get() { + var v = this._bitField.getInt(290, 11, false); + if (v === -1024) return NaN; + return v / 10.0; + } - }, { - key: 'swellHeight', - get: function get() { - var v = this._bitField.getInt(334, 8, true); - return v >= 251 ? NaN : v / 10.0; - } + // |301-310 | 10 |Water Temperature |water_temp |I4|-10.0..+50.0, 0.1°C, 501=N/A + }, { + key: "waterTemp", + get: function get() { + var v = this._bitField.getInt(301, 10, false); + if (v >= 501) return NaN; + return v / 10.0; + } - // |342-350 | 9 |Swell Direction |swell_dir |u|0–359°, 360=N/A + // |311-316 | 6 |Wave Period |wave_period |u|0–60 s, 61=N/A + }, { + key: "wavePeriod", + get: function get() { + var v = this._bitField.getInt(311, 6, true); + return v >= 61 ? NaN : v; + } - }, { - key: 'swellDir', - get: function get() { - var v = this._bitField.getInt(342, 9, true); - return v >= 360 ? NaN : v; - } + // |317-324 | 8 |Significant Wave Height |sig_wave_height |u|0–251 (0.1 m), 251=N/A + }, { + key: "sigWaveHeight", + get: function get() { + var v = this._bitField.getInt(317, 8, true); + return v >= 251 ? NaN : v / 10.0; + } - // |351-356 | 6 |Swell Period |swell_period |u|0–60 s, 61=N/A + // |325-333 | 9 |Wave Direction |wave_dir |u|0–359°, 360=N/A + }, { + key: "waveDir", + get: function get() { + var v = this._bitField.getInt(325, 9, true); + return v >= 360 ? NaN : v; + } - }, { - key: 'swellPeriod', - get: function get() { - var v = this._bitField.getInt(351, 6, true); - return v >= 61 ? NaN : v; - } - }]); + // |334-341 | 8 |Swell Height |swell_height |u|0–251 (0.1 m), 251=N/A + }, { + key: "swellHeight", + get: function get() { + var v = this._bitField.getInt(334, 8, true); + return v >= 251 ? NaN : v / 10.0; + } - return Ais8MsgDac1Fid31; -}(_AisMessage3.default); + // |342-350 | 9 |Swell Direction |swell_dir |u|0–359°, 360=N/A + }, { + key: "swellDir", + get: function get() { + var v = this._bitField.getInt(342, 9, true); + return v >= 360 ? NaN : v; + } -exports.default = Ais8MsgDac1Fid31; + // |351-356 | 6 |Swell Period |swell_period |u|0–60 s, 61=N/A + }, { + key: "swellPeriod", + get: function get() { + var v = this._bitField.getInt(351, 6, true); + return v >= 61 ? NaN : v; + } + }]); +}(_AisMessage2["default"]); diff --git a/lib/Ais08MsgDac1Fid29.js b/lib/Ais08MsgDac1Fid29.js index 389720c..2f79782 100644 --- a/lib/Ais08MsgDac1Fid29.js +++ b/lib/Ais08MsgDac1Fid29.js @@ -1,28 +1,25 @@ -'use strict'; +"use strict"; +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } Object.defineProperty(exports, "__esModule", { - value: true + value: true }); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _AisBitField = require('./AisBitField'); - -var _AisBitField2 = _interopRequireDefault(_AisBitField); - -var _AisMessage2 = require('./AisMessage'); - -var _AisMessage3 = _interopRequireDefault(_AisMessage2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/* +exports["default"] = void 0; +var _AisBitField = _interopRequireDefault(require("./AisBitField")); +var _AisMessage2 = _interopRequireDefault(require("./AisMessage")); +function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } /* * AisParser: A parser for NMEA0183 AIS messages. * Copyright (C) 2025 Davide Gessa . * @@ -38,11 +35,8 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" * You should have received a copy of the Apache License Version 2.0 * along with this program. If not, see . */ - var MOD_NAME = 'Ais8MsgDac1Fid29'; - var SUPPORTED_FIELDS = ['aisType', 'channel', 'repeatInd', 'mmsi', 'dac', 'fid', 'msgLinkageId', 'text']; - var suppValuesValid = false; var suppValues = {}; @@ -61,83 +55,71 @@ var suppValues = {}; |============================================================================== */ - -var Ais8MsgDac1Fid29 = function (_AisMessage) { - _inherits(Ais8MsgDac1Fid29, _AisMessage); - - function Ais8MsgDac1Fid29(aisType, bitField, channel) { - _classCallCheck(this, Ais8MsgDac1Fid29); - - var _this = _possibleConstructorReturn(this, (Ais8MsgDac1Fid29.__proto__ || Object.getPrototypeOf(Ais8MsgDac1Fid29)).call(this, aisType, bitField, channel)); - - if (bitField.bits >= 72 && bitField.bits <= 1032) { - _this._valid = 'VALID'; - } else { - _this._valid = 'INVALID'; - _this._errMsg = 'invalid bitcount for type 8 msg dac 1 fid 29:' + bitField.bits; - } - return _this; +var Ais8MsgDac1Fid29 = exports["default"] = /*#__PURE__*/function (_AisMessage) { + function Ais8MsgDac1Fid29(aisType, bitField, channel) { + var _this; + _classCallCheck(this, Ais8MsgDac1Fid29); + _this = _callSuper(this, Ais8MsgDac1Fid29, [aisType, bitField, channel]); + if (bitField.bits >= 72 && bitField.bits <= 1032) { + _this._valid = 'VALID'; + } else { + _this._valid = 'INVALID'; + _this._errMsg = 'invalid bitcount for type 8 msg dac 1 fid 29:' + bitField.bits; + } + return _this; + } + _inherits(Ais8MsgDac1Fid29, _AisMessage); + return _createClass(Ais8MsgDac1Fid29, [{ + key: "class", + get: function get() { + return 'A'; + } + }, { + key: "supportedValues", + get: function get() { + if (!suppValuesValid) { + SUPPORTED_FIELDS.forEach(function (field) { + var unit = _AisMessage2["default"].getUnit(field); + if (unit) { + suppValues[field] = unit; + } else { + console.warn(MOD_NAME + 'field without unit encountered:' + field); + } + }); + suppValuesValid = true; + } + return suppValues; } - _createClass(Ais8MsgDac1Fid29, [{ - key: 'class', - get: function get() { - return 'A'; - } - }, { - key: 'supportedValues', - get: function get() { - if (!suppValuesValid) { - SUPPORTED_FIELDS.forEach(function (field) { - var unit = _AisMessage3.default.getUnit(field); - if (unit) { - suppValues[field] = unit; - } else { - console.warn(MOD_NAME + 'field without unit encountered:' + field); - } - }); - suppValuesValid = true; - } - return suppValues; - } - - // |40-49 | 10 |Designated area code |dac |u| - - }, { - key: 'dac', - get: function get() { - return this._bitField.getInt(40, 10, true); - } - - // |50-55 | 6 |Function identifier |fid |u| - - }, { - key: 'fid', - get: function get() { - return this._bitField.getInt(50, 6, true); - } - - // |56-65 | 10 |Message linkage id | |u| - - }, { - key: 'msgLinkageId', - get: function get() { - return this._bitField.getInt(56, 10, true); - } - - // |66-... | <=155 |Free text |text |t|6 bit ascii + // |40-49 | 10 |Designated area code |dac |u| + }, { + key: "dac", + get: function get() { + return this._bitField.getInt(40, 10, true); + } - }, { - key: 'text', - get: function get() { - var textStart = 66; - var maxTextBits = Math.min(this._bitField.bits - textStart, 155); - var textLength = maxTextBits - maxTextBits % 6; - return this._formatStr(this._bitField.getString(textStart, textLength).replace(/^@+/, '')); - } - }]); + // |50-55 | 6 |Function identifier |fid |u| + }, { + key: "fid", + get: function get() { + return this._bitField.getInt(50, 6, true); + } - return Ais8MsgDac1Fid29; -}(_AisMessage3.default); + // |56-65 | 10 |Message linkage id | |u| + }, { + key: "msgLinkageId", + get: function get() { + return this._bitField.getInt(56, 10, true); + } -exports.default = Ais8MsgDac1Fid29; + // |66-... | <=155 |Free text |text |t|6 bit ascii + }, { + key: "text", + get: function get() { + var textStart = 66; + var maxTextBits = Math.min(this._bitField.bits - textStart, 155); + var textLength = maxTextBits - maxTextBits % 6; + return this._formatStr(this._bitField.getString(textStart, textLength).replace(/^@+/, '')); + } + }]); +}(_AisMessage2["default"]); diff --git a/lib/Ais08MsgDac1Fid30.js b/lib/Ais08MsgDac1Fid30.js index 1dc6eb9..6b6b1c2 100644 --- a/lib/Ais08MsgDac1Fid30.js +++ b/lib/Ais08MsgDac1Fid30.js @@ -1,28 +1,25 @@ -'use strict'; +"use strict"; +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } Object.defineProperty(exports, "__esModule", { - value: true + value: true }); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _AisBitField = require('./AisBitField'); - -var _AisBitField2 = _interopRequireDefault(_AisBitField); - -var _AisMessage2 = require('./AisMessage'); - -var _AisMessage3 = _interopRequireDefault(_AisMessage2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/* +exports["default"] = void 0; +var _AisBitField = _interopRequireDefault(require("./AisBitField")); +var _AisMessage2 = _interopRequireDefault(require("./AisMessage")); +function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } /* * AisParser: A parser for NMEA0183 AIS messages. * Copyright (C) 2025 Davide Gessa . * @@ -38,11 +35,8 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" * You should have received a copy of the Apache License Version 2.0 * along with this program. If not, see . */ - var MOD_NAME = 'Ais8MsgDac1Fid30'; - var SUPPORTED_FIELDS = ['aisType', 'channel', 'repeatInd', 'mmsi', 'sequence', 'destinationMMSI', 'retransmitted', 'dac', 'fid', 'msgLinkageId', 'text']; - var suppValuesValid = false; var suppValues = {}; @@ -62,120 +56,104 @@ var suppValues = {}; |97-... | <=161 |Free text |text |t|6 bit ascii |============================================================================== */ - -var Ais8MsgDac1Fid30 = function (_AisMessage) { - _inherits(Ais8MsgDac1Fid30, _AisMessage); - - function Ais8MsgDac1Fid30(aisType, bitField, channel) { - _classCallCheck(this, Ais8MsgDac1Fid30); - - var _this = _possibleConstructorReturn(this, (Ais8MsgDac1Fid30.__proto__ || Object.getPrototypeOf(Ais8MsgDac1Fid30)).call(this, aisType, bitField, channel)); - - if (bitField.bits >= 104 && bitField.bits <= 1028) { - _this._valid = 'VALID'; - } else { - _this._valid = 'INVALID'; - _this._errMsg = 'invalid bitcount for type 8 msg dac 1 fid 30:' + bitField.bits; - } - return _this; +var Ais8MsgDac1Fid30 = exports["default"] = /*#__PURE__*/function (_AisMessage) { + function Ais8MsgDac1Fid30(aisType, bitField, channel) { + var _this; + _classCallCheck(this, Ais8MsgDac1Fid30); + _this = _callSuper(this, Ais8MsgDac1Fid30, [aisType, bitField, channel]); + if (bitField.bits >= 104 && bitField.bits <= 1028) { + _this._valid = 'VALID'; + } else { + _this._valid = 'INVALID'; + _this._errMsg = 'invalid bitcount for type 8 msg dac 1 fid 30:' + bitField.bits; + } + return _this; + } + _inherits(Ais8MsgDac1Fid30, _AisMessage); + return _createClass(Ais8MsgDac1Fid30, [{ + key: "class", + get: function get() { + return 'A'; + } + }, { + key: "supportedValues", + get: function get() { + if (!suppValuesValid) { + SUPPORTED_FIELDS.forEach(function (field) { + var unit = _AisMessage2["default"].getUnit(field); + if (unit) { + suppValues[field] = unit; + } else { + console.warn(MOD_NAME + 'field without unit encountered:' + field); + } + }); + suppValuesValid = true; + } + return suppValues; } - _createClass(Ais8MsgDac1Fid30, [{ - key: 'class', - get: function get() { - return 'A'; - } - }, { - key: 'supportedValues', - get: function get() { - if (!suppValuesValid) { - SUPPORTED_FIELDS.forEach(function (field) { - var unit = _AisMessage3.default.getUnit(field); - if (unit) { - suppValues[field] = unit; - } else { - console.warn(MOD_NAME + 'field without unit encountered:' + field); - } - }); - suppValuesValid = true; - } - return suppValues; - } - - // |38-39 | 2 |Seq number |seq |u| - - }, { - key: 'sequence', - get: function get() { - return this._bitField.getInt(38, 2, true); - } - - // |40-69 | 30 |Destination |dest |u| - - }, { - key: 'destinationMMSI', - get: function get() { - return this._bitField.getInt(40, 30, true); - } - - // |70 | 1 |Retransmitted flag |retransm |b| - - }, { - key: 'retransmitted', - get: function get() { - return this._bitField.getInt(70, 1, true) === 1; - } - - // |71 | 1 |spare | - - }, { - key: 'spare', - get: function get() { - return this._bitField.getInt(71, 1, true); - } - - // |72-81 | 10 |Designated area code |dac |u| - - }, { - key: 'dac', - get: function get() { - return this._bitField.getInt(72, 10, true); - } - - // |82-87 | 6 |Function identifier |fid |u| + // |38-39 | 2 |Seq number |seq |u| + }, { + key: "sequence", + get: function get() { + return this._bitField.getInt(38, 2, true); + } - }, { - key: 'fid', - get: function get() { - return this._bitField.getInt(82, 6, true); - } + // |40-69 | 30 |Destination |dest |u| + }, { + key: "destinationMMSI", + get: function get() { + return this._bitField.getInt(40, 30, true); + } - // |88-97 | 10 |Message linkage id | |u| + // |70 | 1 |Retransmitted flag |retransm |b| + }, { + key: "retransmitted", + get: function get() { + return this._bitField.getInt(70, 1, true) === 1; + } - }, { - key: 'msgLinkageId', - get: function get() { - return this._bitField.getInt(88, 10, true); - } + // |71 | 1 |spare | + }, { + key: "spare", + get: function get() { + return this._bitField.getInt(71, 1, true); + } - // |98-... | <=161 |Free text |text |t|6 bit ascii + // |72-81 | 10 |Designated area code |dac |u| + }, { + key: "dac", + get: function get() { + return this._bitField.getInt(72, 10, true); + } - }, { - key: 'text', - get: function get() { - var textStart = 98; - var maxTextBits = Math.min(this._bitField.bits - textStart, 161); - var textLength = maxTextBits - maxTextBits % 6; - if (textLength <= 0) { - return ''; - } - var raw = this._bitField.getString(textStart, textLength); - // strip leading @ padding and apply existing formatting helper - return this._formatStr(raw.replace(/^@+/, '')); - } - }]); + // |82-87 | 6 |Function identifier |fid |u| + }, { + key: "fid", + get: function get() { + return this._bitField.getInt(82, 6, true); + } - return Ais8MsgDac1Fid30; -}(_AisMessage3.default); + // |88-97 | 10 |Message linkage id | |u| + }, { + key: "msgLinkageId", + get: function get() { + return this._bitField.getInt(88, 10, true); + } -exports.default = Ais8MsgDac1Fid30; + // |98-... | <=161 |Free text |text |t|6 bit ascii + }, { + key: "text", + get: function get() { + var textStart = 98; + var maxTextBits = Math.min(this._bitField.bits - textStart, 161); + var textLength = maxTextBits - maxTextBits % 6; + if (textLength <= 0) { + return ''; + } + var raw = this._bitField.getString(textStart, textLength); + // strip leading @ padding and apply existing formatting helper + return this._formatStr(raw.replace(/^@+/, '')); + } + }]); +}(_AisMessage2["default"]); diff --git a/lib/Ais08MsgDac1Fid31.js b/lib/Ais08MsgDac1Fid31.js index 6c063f4..a4bb32c 100644 --- a/lib/Ais08MsgDac1Fid31.js +++ b/lib/Ais08MsgDac1Fid31.js @@ -1,28 +1,25 @@ -'use strict'; +"use strict"; +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } Object.defineProperty(exports, "__esModule", { - value: true + value: true }); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _AisBitField = require('./AisBitField'); - -var _AisBitField2 = _interopRequireDefault(_AisBitField); - -var _AisMessage2 = require('./AisMessage'); - -var _AisMessage3 = _interopRequireDefault(_AisMessage2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/* +exports["default"] = void 0; +var _AisBitField = _interopRequireDefault(require("./AisBitField")); +var _AisMessage2 = _interopRequireDefault(require("./AisMessage")); +function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } /* * AisParser: A parser for NMEA0183 AIS messages. * Copyright (C) 2025 Davide Gessa . * @@ -38,11 +35,8 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" * You should have received a copy of the Apache License Version 2.0 * along with this program. If not, see . */ - var MOD_NAME = 'Ais8MsgDac1Fid31'; - var SUPPORTED_FIELDS = ['aisType', 'channel', 'repeatInd', 'mmsi', 'dac', 'fid', 'longitude', 'latitude', 'posAccuracy', 'utcDay', 'utcHour', 'utcMinute', 'avgWindSpeed', 'avgGustSpeed', 'avgWindDirection', 'avgGustDirection', 'airTemperature', 'relativeHumidity', 'dewPoint', 'airPressure', 'airPressureTendency', 'horizontalVisibility', 'waterLevel', 'waterLevelTrend', 'curr1Speed', 'curr1Direction', 'curr2Speed', 'curr2Direction', 'curr2Level', 'curr3Speed', 'curr3Direction', 'curr3Level', 'sigWaveHeight', 'wavePeriod', 'waveDirection', 'swellHeight', 'swellPeriod', 'swellDirection', 'seaState', 'waterTemperature', 'precipitationType', 'salinity', 'ice']; - var suppValuesValid = false; var suppValues = {}; @@ -95,557 +89,510 @@ var suppValues = {}; |350-359 | 10 |Spare | |u |Not used, set to zero |============================================================================== */ +var Ais8MsgDac1Fid31 = exports["default"] = /*#__PURE__*/function (_AisMessage) { + function Ais8MsgDac1Fid31(aisType, bitField, channel) { + var _this; + _classCallCheck(this, Ais8MsgDac1Fid31); + _this = _callSuper(this, Ais8MsgDac1Fid31, [aisType, bitField, channel]); + if (bitField.bits == 360) { + _this._valid = 'VALID'; + } else { + _this._valid = 'INVALID'; + _this._errMsg = 'invalid bitcount for type 8 msg dac 1 fid 31:' + bitField.bits; + } + return _this; + } + _inherits(Ais8MsgDac1Fid31, _AisMessage); + return _createClass(Ais8MsgDac1Fid31, [{ + key: "class", + get: function get() { + return 'A'; + } + }, { + key: "supportedValues", + get: function get() { + if (!suppValuesValid) { + SUPPORTED_FIELDS.forEach(function (field) { + var unit = _AisMessage2["default"].getUnit(field); + if (unit) { + suppValues[field] = unit; + } else { + console.warn(MOD_NAME + 'field without unit encountered:' + field); + } + }); + suppValuesValid = true; + } + return suppValues; + } + + // |40-49 | 10 |Designated area code |dac |u| + }, { + key: "dac", + get: function get() { + return this._bitField.getInt(40, 10, true); + } + + // |50-55 | 6 |Function identifier |fid |u| + }, { + key: "fid", + get: function get() { + return this._bitField.getInt(50, 6, true); + } + + // |56-80 | 25 |Longitude |longitude |I4| Longitude in 1/1000 min, ±180 deg by 2's complement; 181 = not available + }, { + key: "_getRawLon", + value: function _getRawLon() { + return this._bitField.getInt(56, 25, false) * 10; + } + + // |81-104 | 24 |Latitude |latitude |I4| Latitude in 1/1000 min, ±90 deg by 2's complement; 91 = not available + }, { + key: "_getRawLat", + value: function _getRawLat() { + return this._bitField.getInt(81, 24, false) * 10; + } + + // // |56-80 | 25 |Longitude |longitude |I4| Longitude in 1/1000 min, ±180 deg by 2's complement; 181 = not available + // get longitude(): number { + // return this._bitField.getInt(56, 25, false); + // } + + // // |81-104 | 24 |Latitude |latitude |I4| Latitude in 1/1000 min, ±90 deg by 2's complement; 91 = not available + // get latitude(): number { + // return this._bitField.getInt(81, 24, false); + // } + + // |105 | 1 |Position Accuracy |posAccuracy |u| 1 = < 10m, 0 = > 10m + }, { + key: "posAccuracy", + get: function get() { + return this._bitField.getInt(105, 1, true) === 1; + } + + // |106-110 | 5 |Day (UTC) |utcDay |u| 1-31; 0 = not available + }, { + key: "utcDay", + get: function get() { + return this._bitField.getInt(106, 5, true) || NaN; + } + + // |111-115 | 5 |Hour (UTC) |utcHour |u| 0-23; 24 = not available + }, { + key: "utcHour", + get: function get() { + var val = this._bitField.getInt(111, 5, true); + if (val >= 24) { + return NaN; + } else { + return val; + } + } + + // |116-121 | 6 |Minute (UTC) |utcMinute |u| 0-59; 60 = not available + }, { + key: "utcMinute", + get: function get() { + var val = this._bitField.getInt(116, 6, true); + if (val >= 60) { + return NaN; + } else { + return val; + } + } + + // |122-128 | 7 |Average Wind Speed |avgWindSpeed |u| 0-125 knots; 127 = not available + }, { + key: "avgWindSpeed", + get: function get() { + var val = this._bitField.getInt(122, 7, true); + if (val >= 127) { + return NaN; + } else { + return val; + } + } + + // |129-135 | 7 |Wind Gust |avgGustSpeed |u| 0-125 knots; 127 = not available + }, { + key: "avgGustSpeed", + get: function get() { + var val = this._bitField.getInt(129, 7, true); + if (val >= 127) { + return NaN; + } else { + return val; + } + } + + // |136-144 | 9 |Wind Direction |avgWindDirection |u| 0-359 deg; 360 = not available + }, { + key: "avgWindDirection", + get: function get() { + var val = this._bitField.getInt(136, 9, true); + if (val >= 360) { + return NaN; + } else { + return val; + } + } + + // |145-153 | 9 |Wind Gust Direction |avgGustDirection |u| 0-359 deg; 360 = not available + }, { + key: "avgGustDirection", + get: function get() { + var val = this._bitField.getInt(145, 9, true); + if (val >= 360) { + return NaN; + } else { + return val; + } + } + + // |154-164 | 11 |Air Temperature |airTemperature |I4| In 0.1 °C steps, -60.0 to +60.0°C; -1024 = not available + }, { + key: "airTemperature", + get: function get() { + var val = this._bitField.getInt(154, 11, false); + if (val == -1024) { + return NaN; + } else { + return val / 10.0; + } + } + + // |165-171 | 7 |Relative Humidity |relativeHumidity |u| 0-100%; 101 = not available + }, { + key: "relativeHumidity", + get: function get() { + var val = this._bitField.getInt(165, 7, true); + if (val >= 101) { + return NaN; + } else { + return val; + } + } + + // |172-181 | 10 |Dew Point |dewPoint |I4| -20.0 to +50.0 °C; 501 = not available + }, { + key: "dewPoint", + get: function get() { + var val = this._bitField.getInt(172, 10, false); + if (val >= 501) { + return NaN; + } else { + return val / 10.0; + } + } -var Ais8MsgDac1Fid31 = function (_AisMessage) { - _inherits(Ais8MsgDac1Fid31, _AisMessage); - - function Ais8MsgDac1Fid31(aisType, bitField, channel) { - _classCallCheck(this, Ais8MsgDac1Fid31); - - var _this = _possibleConstructorReturn(this, (Ais8MsgDac1Fid31.__proto__ || Object.getPrototypeOf(Ais8MsgDac1Fid31)).call(this, aisType, bitField, channel)); - - if (bitField.bits == 360) { - _this._valid = 'VALID'; - } else { - _this._valid = 'INVALID'; - _this._errMsg = 'invalid bitcount for type 8 msg dac 1 fid 31:' + bitField.bits; - } - return _this; - } - - _createClass(Ais8MsgDac1Fid31, [{ - key: '_getRawLon', - - - // |56-80 | 25 |Longitude |longitude |I4| Longitude in 1/1000 min, ±180 deg by 2's complement; 181 = not available - value: function _getRawLon() { - return this._bitField.getInt(56, 25, false) * 10; - } - - // |81-104 | 24 |Latitude |latitude |I4| Latitude in 1/1000 min, ±90 deg by 2's complement; 91 = not available - - }, { - key: '_getRawLat', - value: function _getRawLat() { - return this._bitField.getInt(81, 24, false) * 10; - } - - // // |56-80 | 25 |Longitude |longitude |I4| Longitude in 1/1000 min, ±180 deg by 2's complement; 181 = not available - // get longitude(): number { - // return this._bitField.getInt(56, 25, false); - // } - - // // |81-104 | 24 |Latitude |latitude |I4| Latitude in 1/1000 min, ±90 deg by 2's complement; 91 = not available - // get latitude(): number { - // return this._bitField.getInt(81, 24, false); - // } - - // |105 | 1 |Position Accuracy |posAccuracy |u| 1 = < 10m, 0 = > 10m - - }, { - key: 'class', - get: function get() { - return 'A'; - } - }, { - key: 'supportedValues', - get: function get() { - if (!suppValuesValid) { - SUPPORTED_FIELDS.forEach(function (field) { - var unit = _AisMessage3.default.getUnit(field); - if (unit) { - suppValues[field] = unit; - } else { - console.warn(MOD_NAME + 'field without unit encountered:' + field); - } - }); - suppValuesValid = true; - } - return suppValues; - } - - // |40-49 | 10 |Designated area code |dac |u| - - }, { - key: 'dac', - get: function get() { - return this._bitField.getInt(40, 10, true); - } - - // |50-55 | 6 |Function identifier |fid |u| - - }, { - key: 'fid', - get: function get() { - return this._bitField.getInt(50, 6, true); - } - }, { - key: 'posAccuracy', - get: function get() { - return this._bitField.getInt(105, 1, true) === 1; - } - - // |106-110 | 5 |Day (UTC) |utcDay |u| 1-31; 0 = not available - - }, { - key: 'utcDay', - get: function get() { - return this._bitField.getInt(106, 5, true) || NaN; - } - - // |111-115 | 5 |Hour (UTC) |utcHour |u| 0-23; 24 = not available - - }, { - key: 'utcHour', - get: function get() { - var val = this._bitField.getInt(111, 5, true); - if (val >= 24) { - return NaN; - } else { - return val; - } - } - - // |116-121 | 6 |Minute (UTC) |utcMinute |u| 0-59; 60 = not available - - }, { - key: 'utcMinute', - get: function get() { - var val = this._bitField.getInt(116, 6, true); - if (val >= 60) { - return NaN; - } else { - return val; - } - } - - // |122-128 | 7 |Average Wind Speed |avgWindSpeed |u| 0-125 knots; 127 = not available - - }, { - key: 'avgWindSpeed', - get: function get() { - var val = this._bitField.getInt(122, 7, true); - if (val >= 127) { - return NaN; - } else { - return val; - } - } - - // |129-135 | 7 |Wind Gust |avgGustSpeed |u| 0-125 knots; 127 = not available - - }, { - key: 'avgGustSpeed', - get: function get() { - var val = this._bitField.getInt(129, 7, true); - if (val >= 127) { - return NaN; - } else { - return val; - } - } - - // |136-144 | 9 |Wind Direction |avgWindDirection |u| 0-359 deg; 360 = not available - - }, { - key: 'avgWindDirection', - get: function get() { - var val = this._bitField.getInt(136, 9, true); - if (val >= 360) { - return NaN; - } else { - return val; - } - } - - // |145-153 | 9 |Wind Gust Direction |avgGustDirection |u| 0-359 deg; 360 = not available - - }, { - key: 'avgGustDirection', - get: function get() { - var val = this._bitField.getInt(145, 9, true); - if (val >= 360) { - return NaN; - } else { - return val; - } - } - - // |154-164 | 11 |Air Temperature |airTemperature |I4| In 0.1 °C steps, -60.0 to +60.0°C; -1024 = not available - - }, { - key: 'airTemperature', - get: function get() { - var val = this._bitField.getInt(154, 11, false); - if (val == -1024) { - return NaN; - } else { - return val / 10.0; - } - } - - // |165-171 | 7 |Relative Humidity |relativeHumidity |u| 0-100%; 101 = not available - - }, { - key: 'relativeHumidity', - get: function get() { - var val = this._bitField.getInt(165, 7, true); - if (val >= 101) { - return NaN; - } else { - return val; - } - } - - // |172-181 | 10 |Dew Point |dewPoint |I4| -20.0 to +50.0 °C; 501 = not available - - }, { - key: 'dewPoint', - get: function get() { - var val = this._bitField.getInt(172, 10, false); - if (val >= 501) { - return NaN; - } else { - return val / 10.0; - } - } - - // |182-190 | 9 |Air Pressure |airPressure |u| 800-1200 hPa; 511 = not available - - }, { - key: 'airPressure', - get: function get() { - var val = this._bitField.getInt(182, 9, true); - if (val == 0) { - return 799; - } else if (val == 402) { - return 1201; - } else if (val >= 403) { - return NaN; - } else { - return 800 + val; - } - } - - // |191-192 | 2 |Air Pressure Tendency |airPressureTendency |u| 0=steady, 1=decreasing, 2=increasing, 3=not available - - }, { - key: 'airPressureTendency', - get: function get() { - var val = this._bitField.getInt(191, 2, true); - switch (val) { - case 0: - return 'STEADY'; - case 1: - return 'DECREASING'; - case 2: - return 'INCREASING'; - default: - return 'NA'; - } - } - - // |193-200 | 8 |Horizontal Visibility |horizontalVisibility |u| 0-126 (0.1NM); 127 = not available - - }, { - key: 'horizontalVisibility', - get: function get() { - var val = this._bitField.getInt(193, 8, true); - if (val >= 127) { - return NaN; - } else { - return val / 10.0; - } - } - - // |201-212 | 12 |Water Level (incl. tide) |waterLevel |u| 0-4000 (add -10.0); 4001 = not available - - }, { - key: 'waterLevel', - get: function get() { - var val = this._bitField.getInt(201, 12, true); - if (val >= 4001) { - return NaN; - } else { - return val / 100.0 - 10; - } - } - - // |213-214 | 2 |Water Level Trend |waterLevelTrend |u| 0=steady, 1=decreasing, 2=increasing, 3=not available - - }, { - key: 'waterLevelTrend', - get: function get() { - var val = this._bitField.getInt(213, 2, true); - switch (val) { - case 0: - return 'STEADY'; - case 1: - return 'DECREASING'; - case 2: - return 'INCREASING'; - default: - return 'NA'; - } - } - - // |215-222 | 8 |Surface Current Speed |curr1Speed |u| 0-251 (0.1kt); 251+ = not available - - }, { - key: 'curr1Speed', - get: function get() { - var val = this._bitField.getInt(215, 8, true); - if (val >= 251) { - return NaN; - } else { - return val / 10.0; - } - } - - // |223-231 | 9 |Surface Current Direction|curr1Direction |u| 0-359 deg; 360 = not available - - }, { - key: 'curr1Direction', - get: function get() { - var val = this._bitField.getInt(223, 9, true); - if (val >= 360) { - return NaN; - } else { - return val; - } - } - - // |232-239 | 8 |Current Speed #2 |curr2Speed |u| Same encoding as curr1Speed - - }, { - key: 'curr2Speed', - get: function get() { - var val = this._bitField.getInt(232, 8, true); - if (val >= 251) { - return NaN; - } else { - return val / 10.0; - } - } - - // |240-248 | 9 |Current Direction #2 |curr2Direction |u| Same encoding as curr1Direction - - }, { - key: 'curr2Direction', - get: function get() { - var val = this._bitField.getInt(240, 9, true); - if (val >= 360) { - return NaN; - } else { - return val; - } - } - - // |249-253 | 5 |Current Measuring Lv #2 |curr2Level |u| 0-30 m, 31 = not available - - }, { - key: 'curr2Level', - get: function get() { - var val = this._bitField.getInt(249, 5, true); - if (val >= 31) { - return NaN; - } else { - return val; - } - } - - // |254-261 | 8 |Current Speed #3 |curr3Speed |u| Same encoding as curr1Speed - - }, { - key: 'curr3Speed', - get: function get() { - var val = this._bitField.getInt(254, 8, true); - if (val >= 251) { - return NaN; - } else { - return val / 10.0; - } - } - - // |262-270 | 9 |Current Direction #3 |curr3Direction |u| Same encoding as curr1Direction - - }, { - key: 'curr3Direction', - get: function get() { - var val = this._bitField.getInt(262, 9, true); - if (val >= 360) { - return NaN; - } else { - return val; - } - } - - // |271-275 | 5 |Current Measuring Lv #3 |curr3Level |u| 0-30 m, 31 = not available - - }, { - key: 'curr3Level', - get: function get() { - var val = this._bitField.getInt(271, 5, true); - if (val >= 31) { - return NaN; - } else { - return val; - } - } - - // |276-283 | 8 |Significant Wave Height |sigWaveHeight |u| 0-251 (0.1m); 251+ = not available - - }, { - key: 'sigWaveHeight', - get: function get() { - var val = this._bitField.getInt(276, 8, true); - if (val >= 251) { - return NaN; - } else { - return val / 10.0; - } - } - - // |284-289 | 6 |Wave Period |wavePeriod |u| 0-60 s; 61+ = not available - - }, { - key: 'wavePeriod', - get: function get() { - var val = this._bitField.getInt(284, 6, true); - if (val >= 61) { - return NaN; - } else { - return val; - } - } - - // |290-298 | 9 |Wave Direction |waveDirection |u| 0-359 deg; 360+ = not available - - }, { - key: 'waveDirection', - get: function get() { - var val = this._bitField.getInt(290, 9, true); - if (val >= 360) { - return NaN; - } else { - return val; - } - } - - // |299-306 | 8 |Swell Height |swellHeight |u| 0-251 (0.1m); 251+ = not available - - }, { - key: 'swellHeight', - get: function get() { - var val = this._bitField.getInt(299, 8, true); - if (val >= 251) { - return NaN; - } else { - return val / 10.0; - } - } - - // |307-312 | 6 |Swell Period |swellPeriod |u| 0-60 s; 61+ = not available - - }, { - key: 'swellPeriod', - get: function get() { - var val = this._bitField.getInt(307, 6, true); - if (val >= 61) { - return NaN; - } else { - return val; - } - } - - // |313-321 | 9 |Swell Direction |swellDirection |u| 0-359 deg; 360+ = not available - - }, { - key: 'swellDirection', - get: function get() { - var val = this._bitField.getInt(313, 9, true); - if (val >= 360) { - return NaN; - } else { - return val; - } - } - - // |322-325 | 4 |Sea State |seaState |u| Beaufort code - - }, { - key: 'seaState', - get: function get() { - var val = this._bitField.getInt(322, 4, true); - if (val >= 13) return NaN; - return val; - } - - // |326-335 | 10 |Water Temperature |waterTemperature |I4| -10.0 to +50.0°C (0.1°C); 501 = not available - - }, { - key: 'waterTemperature', - get: function get() { - var val = this._bitField.getInt(326, 10, false); - if (val >= 501) { - return NaN; - } else { - return val / 10.0; - } - } - - // |336-338 | 3 |Precipitation Type |precipitationType |u| 0=reserved, 1=rain, …, 5=snow - - }, { - key: 'precipitationType', - get: function get() { - var val = this._bitField.getInt(336, 3, true); - switch (val) { - case 0: - return 'RESERVED'; - case 1: - return 'RAIN'; - case 2: - return 'THUNDERSTORM'; - case 3: - return 'FREEZING'; - case 4: - return 'FREEZING'; - case 5: - return 'SNOW'; - default: - return 'NA'; - } - } - - // |339-347 | 9 |Salinity |salinity |u| 0-500 (0.1 ppt), 510 = not available - - }, { - key: 'salinity', - get: function get() { - var val = this._bitField.getInt(339, 9, true); - if (val >= 510) { - return NaN; - } else { - return val / 10.0; - } - } - - // |348-349 | 2 |Ice |ice |u| 0=no, 1=yes, 2=reserved, 3=not available - - }, { - key: 'ice', - get: function get() { - var val = this._bitField.getInt(348, 2, true); - if (val >= 3) { - return NaN; - } else { - return val; - } - } - }]); - - return Ais8MsgDac1Fid31; -}(_AisMessage3.default); - -exports.default = Ais8MsgDac1Fid31; + // |182-190 | 9 |Air Pressure |airPressure |u| 800-1200 hPa; 511 = not available + }, { + key: "airPressure", + get: function get() { + var val = this._bitField.getInt(182, 9, true); + if (val == 0) { + return 799; + } else if (val == 402) { + return 1201; + } else if (val >= 403) { + return NaN; + } else { + return 800 + val; + } + } + + // |191-192 | 2 |Air Pressure Tendency |airPressureTendency |u| 0=steady, 1=decreasing, 2=increasing, 3=not available + }, { + key: "airPressureTendency", + get: function get() { + var val = this._bitField.getInt(191, 2, true); + switch (val) { + case 0: + return 'STEADY'; + case 1: + return 'DECREASING'; + case 2: + return 'INCREASING'; + default: + return 'NA'; + } + } + + // |193-200 | 8 |Horizontal Visibility |horizontalVisibility |u| 0-126 (0.1NM); 127 = not available + }, { + key: "horizontalVisibility", + get: function get() { + var val = this._bitField.getInt(193, 8, true); + if (val >= 127) { + return NaN; + } else { + return val / 10.0; + } + } + + // |201-212 | 12 |Water Level (incl. tide) |waterLevel |u| 0-4000 (add -10.0); 4001 = not available + }, { + key: "waterLevel", + get: function get() { + var val = this._bitField.getInt(201, 12, true); + if (val >= 4001) { + return NaN; + } else { + return val / 100.0 - 10; + } + } + + // |213-214 | 2 |Water Level Trend |waterLevelTrend |u| 0=steady, 1=decreasing, 2=increasing, 3=not available + }, { + key: "waterLevelTrend", + get: function get() { + var val = this._bitField.getInt(213, 2, true); + switch (val) { + case 0: + return 'STEADY'; + case 1: + return 'DECREASING'; + case 2: + return 'INCREASING'; + default: + return 'NA'; + } + } + + // |215-222 | 8 |Surface Current Speed |curr1Speed |u| 0-251 (0.1kt); 251+ = not available + }, { + key: "curr1Speed", + get: function get() { + var val = this._bitField.getInt(215, 8, true); + if (val >= 251) { + return NaN; + } else { + return val / 10.0; + } + } + + // |223-231 | 9 |Surface Current Direction|curr1Direction |u| 0-359 deg; 360 = not available + }, { + key: "curr1Direction", + get: function get() { + var val = this._bitField.getInt(223, 9, true); + if (val >= 360) { + return NaN; + } else { + return val; + } + } + + // |232-239 | 8 |Current Speed #2 |curr2Speed |u| Same encoding as curr1Speed + }, { + key: "curr2Speed", + get: function get() { + var val = this._bitField.getInt(232, 8, true); + if (val >= 251) { + return NaN; + } else { + return val / 10.0; + } + } + + // |240-248 | 9 |Current Direction #2 |curr2Direction |u| Same encoding as curr1Direction + }, { + key: "curr2Direction", + get: function get() { + var val = this._bitField.getInt(240, 9, true); + if (val >= 360) { + return NaN; + } else { + return val; + } + } + + // |249-253 | 5 |Current Measuring Lv #2 |curr2Level |u| 0-30 m, 31 = not available + }, { + key: "curr2Level", + get: function get() { + var val = this._bitField.getInt(249, 5, true); + if (val >= 31) { + return NaN; + } else { + return val; + } + } + + // |254-261 | 8 |Current Speed #3 |curr3Speed |u| Same encoding as curr1Speed + }, { + key: "curr3Speed", + get: function get() { + var val = this._bitField.getInt(254, 8, true); + if (val >= 251) { + return NaN; + } else { + return val / 10.0; + } + } + + // |262-270 | 9 |Current Direction #3 |curr3Direction |u| Same encoding as curr1Direction + }, { + key: "curr3Direction", + get: function get() { + var val = this._bitField.getInt(262, 9, true); + if (val >= 360) { + return NaN; + } else { + return val; + } + } + + // |271-275 | 5 |Current Measuring Lv #3 |curr3Level |u| 0-30 m, 31 = not available + }, { + key: "curr3Level", + get: function get() { + var val = this._bitField.getInt(271, 5, true); + if (val >= 31) { + return NaN; + } else { + return val; + } + } + + // |276-283 | 8 |Significant Wave Height |sigWaveHeight |u| 0-251 (0.1m); 251+ = not available + }, { + key: "sigWaveHeight", + get: function get() { + var val = this._bitField.getInt(276, 8, true); + if (val >= 251) { + return NaN; + } else { + return val / 10.0; + } + } + + // |284-289 | 6 |Wave Period |wavePeriod |u| 0-60 s; 61+ = not available + }, { + key: "wavePeriod", + get: function get() { + var val = this._bitField.getInt(284, 6, true); + if (val >= 61) { + return NaN; + } else { + return val; + } + } + + // |290-298 | 9 |Wave Direction |waveDirection |u| 0-359 deg; 360+ = not available + }, { + key: "waveDirection", + get: function get() { + var val = this._bitField.getInt(290, 9, true); + if (val >= 360) { + return NaN; + } else { + return val; + } + } + + // |299-306 | 8 |Swell Height |swellHeight |u| 0-251 (0.1m); 251+ = not available + }, { + key: "swellHeight", + get: function get() { + var val = this._bitField.getInt(299, 8, true); + if (val >= 251) { + return NaN; + } else { + return val / 10.0; + } + } + + // |307-312 | 6 |Swell Period |swellPeriod |u| 0-60 s; 61+ = not available + }, { + key: "swellPeriod", + get: function get() { + var val = this._bitField.getInt(307, 6, true); + if (val >= 61) { + return NaN; + } else { + return val; + } + } + + // |313-321 | 9 |Swell Direction |swellDirection |u| 0-359 deg; 360+ = not available + }, { + key: "swellDirection", + get: function get() { + var val = this._bitField.getInt(313, 9, true); + if (val >= 360) { + return NaN; + } else { + return val; + } + } + + // |322-325 | 4 |Sea State |seaState |u| Beaufort code + }, { + key: "seaState", + get: function get() { + var val = this._bitField.getInt(322, 4, true); + if (val >= 13) return NaN; + return val; + } + + // |326-335 | 10 |Water Temperature |waterTemperature |I4| -10.0 to +50.0°C (0.1°C); 501 = not available + }, { + key: "waterTemperature", + get: function get() { + var val = this._bitField.getInt(326, 10, false); + if (val >= 501) { + return NaN; + } else { + return val / 10.0; + } + } + + // |336-338 | 3 |Precipitation Type |precipitationType |u| 0=reserved, 1=rain, …, 5=snow + }, { + key: "precipitationType", + get: function get() { + var val = this._bitField.getInt(336, 3, true); + switch (val) { + case 0: + return 'RESERVED'; + case 1: + return 'RAIN'; + case 2: + return 'THUNDERSTORM'; + case 3: + return 'FREEZING'; + case 4: + return 'FREEZING'; + case 5: + return 'SNOW'; + default: + return 'NA'; + } + } + + // |339-347 | 9 |Salinity |salinity |u| 0-500 (0.1 ppt), 510 = not available + }, { + key: "salinity", + get: function get() { + var val = this._bitField.getInt(339, 9, true); + if (val >= 510) { + return NaN; + } else { + return val / 10.0; + } + } + + // |348-349 | 2 |Ice |ice |u| 0=no, 1=yes, 2=reserved, 3=not available + }, { + key: "ice", + get: function get() { + var val = this._bitField.getInt(348, 2, true); + if (val >= 3) { + return NaN; + } else { + return val; + } + } + }]); +}(_AisMessage2["default"]); diff --git a/lib/Ais08MsgDac200Fid10.js b/lib/Ais08MsgDac200Fid10.js index 73bc0bb..43c1a7d 100644 --- a/lib/Ais08MsgDac200Fid10.js +++ b/lib/Ais08MsgDac200Fid10.js @@ -1,28 +1,25 @@ -'use strict'; +"use strict"; +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } Object.defineProperty(exports, "__esModule", { - value: true + value: true }); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _AisBitField = require('./AisBitField'); - -var _AisBitField2 = _interopRequireDefault(_AisBitField); - -var _AisMessage2 = require('./AisMessage'); - -var _AisMessage3 = _interopRequireDefault(_AisMessage2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/* +exports["default"] = void 0; +var _AisBitField = _interopRequireDefault(require("./AisBitField")); +var _AisMessage2 = _interopRequireDefault(require("./AisMessage")); +function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } /* * AisParser: A parser for NMEA0183 AIS messages. * Copyright (C) 2025 Davide Gessa . * @@ -38,11 +35,8 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" * You should have received a copy of the Apache License Version 2.0 * along with this program. If not, see . */ - var MOD_NAME = 'Ais8MsgDac200Fid10'; - var SUPPORTED_FIELDS = ['aisType', 'channel', 'repeatInd', 'mmsi', 'dac', 'fid', 'vin', 'length', 'beam', 'shipTypeERI', 'hazard', 'draught', 'load', 'speedQuality', 'courseQuality', 'headingQuality']; - var suppValuesValid = false; var suppValues = {}; @@ -68,144 +62,124 @@ var suppValues = {}; |160-167 | 8 |spare | |u|not used |============================================================================== */ - -var Ais8MsgDac200Fid10 = function (_AisMessage) { - _inherits(Ais8MsgDac200Fid10, _AisMessage); - - function Ais8MsgDac200Fid10(aisType, bitField, channel) { - _classCallCheck(this, Ais8MsgDac200Fid10); - - var _this = _possibleConstructorReturn(this, (Ais8MsgDac200Fid10.__proto__ || Object.getPrototypeOf(Ais8MsgDac200Fid10)).call(this, aisType, bitField, channel)); - - if (bitField.bits == 168) { - _this._valid = 'VALID'; - } else { - _this._valid = 'INVALID'; - _this._errMsg = 'invalid bitcount for type 8 msg dac 200 fid 10:' + bitField.bits; - } - return _this; +var Ais8MsgDac200Fid10 = exports["default"] = /*#__PURE__*/function (_AisMessage) { + function Ais8MsgDac200Fid10(aisType, bitField, channel) { + var _this; + _classCallCheck(this, Ais8MsgDac200Fid10); + _this = _callSuper(this, Ais8MsgDac200Fid10, [aisType, bitField, channel]); + if (bitField.bits == 168) { + _this._valid = 'VALID'; + } else { + _this._valid = 'INVALID'; + _this._errMsg = 'invalid bitcount for type 8 msg dac 200 fid 10:' + bitField.bits; + } + return _this; + } + _inherits(Ais8MsgDac200Fid10, _AisMessage); + return _createClass(Ais8MsgDac200Fid10, [{ + key: "class", + get: function get() { + return 'A'; + } + }, { + key: "supportedValues", + get: function get() { + if (!suppValuesValid) { + SUPPORTED_FIELDS.forEach(function (field) { + var unit = _AisMessage2["default"].getUnit(field); + if (unit) { + suppValues[field] = unit; + } else { + console.warn(MOD_NAME + 'field without unit encountered:' + field); + } + }); + suppValuesValid = true; + } + return suppValues; } - _createClass(Ais8MsgDac200Fid10, [{ - key: 'class', - get: function get() { - return 'A'; - } - }, { - key: 'supportedValues', - get: function get() { - if (!suppValuesValid) { - SUPPORTED_FIELDS.forEach(function (field) { - var unit = _AisMessage3.default.getUnit(field); - if (unit) { - suppValues[field] = unit; - } else { - console.warn(MOD_NAME + 'field without unit encountered:' + field); - } - }); - suppValuesValid = true; - } - return suppValues; - } - - // |40-49 | 10 |Designated area code |dac |u| - - }, { - key: 'dac', - get: function get() { - return this._bitField.getInt(40, 10, true); - } - - // |50-55 | 6 |Function identifier |fid |u| - - }, { - key: 'fid', - get: function get() { - return this._bitField.getInt(50, 6, true); - } - - // |56-103 | 48 |European Vessel ID |vin |t|8 six-bit characters - - }, { - key: 'vin', - get: function get() { - return this._formatStr(this._bitField.getString(56, 48)); - } - - // |104-116 | 13 |Length of ship |length |f| - - }, { - key: 'length', - get: function get() { - return this._bitField.getInt(104, 13, true) / 10.; - } - - // |117-126 | 10 |Beam of ship |beam |f| - - }, { - key: 'beam', - get: function get() { - return this._bitField.getInt(117, 10, true) / 10.; - } - - // |127-140 | 14 |ERI classification |shipTypeERI|u| - - }, { - key: 'shipTypeERI', - get: function get() { - return this._bitField.getInt(127, 14, true); - } - - // |141-143 | 3 |Hazardous cargo |hazard |u| - - }, { - key: 'hazard', - get: function get() { - return this._bitField.getInt(141, 3, true); - } - - // |144-154 | 11 |Draught |draught |f| + // |40-49 | 10 |Designated area code |dac |u| + }, { + key: "dac", + get: function get() { + return this._bitField.getInt(40, 10, true); + } - }, { - key: 'draught', - get: function get() { - return this._bitField.getInt(144, 11, true) / 100.; - } + // |50-55 | 6 |Function identifier |fid |u| + }, { + key: "fid", + get: function get() { + return this._bitField.getInt(50, 6, true); + } - // |155-156 | 2 |Loaded/unloaded |load |u| + // |56-103 | 48 |European Vessel ID |vin |t|8 six-bit characters + }, { + key: "vin", + get: function get() { + return this._formatStr(this._bitField.getString(56, 48)); + } - }, { - key: 'load', - get: function get() { - return this._bitField.getInt(155, 2, true); - } + // |104-116 | 13 |Length of ship |length |f| + }, { + key: "length", + get: function get() { + return this._bitField.getInt(104, 13, true) / 10.; + } - // |157 | 1 |Quality of speed info |speedQuality|b| + // |117-126 | 10 |Beam of ship |beam |f| + }, { + key: "beam", + get: function get() { + return this._bitField.getInt(117, 10, true) / 10.; + } - }, { - key: 'speedQuality', - get: function get() { - return this._bitField.getInt(157, 1, true) == 1; - } + // |127-140 | 14 |ERI classification |shipTypeERI|u| + }, { + key: "shipTypeERI", + get: function get() { + return this._bitField.getInt(127, 14, true); + } - // |158 | 1 |Quality of course info |courseQuality|b| + // |141-143 | 3 |Hazardous cargo |hazard |u| + }, { + key: "hazard", + get: function get() { + return this._bitField.getInt(141, 3, true); + } - }, { - key: 'courseQuality', - get: function get() { - return this._bitField.getInt(158, 1, true) == 1; - } + // |144-154 | 11 |Draught |draught |f| + }, { + key: "draught", + get: function get() { + return this._bitField.getInt(144, 11, true) / 100.; + } - // |159 | 1 |Quality of heading info |headingQuality|b| + // |155-156 | 2 |Loaded/unloaded |load |u| + }, { + key: "load", + get: function get() { + return this._bitField.getInt(155, 2, true); + } - }, { - key: 'headingQuality', - get: function get() { - return this._bitField.getInt(159, 1, true) == 1; - } - }]); + // |157 | 1 |Quality of speed info |speedQuality|b| + }, { + key: "speedQuality", + get: function get() { + return this._bitField.getInt(157, 1, true) == 1; + } - return Ais8MsgDac200Fid10; -}(_AisMessage3.default); + // |158 | 1 |Quality of course info |courseQuality|b| + }, { + key: "courseQuality", + get: function get() { + return this._bitField.getInt(158, 1, true) == 1; + } -exports.default = Ais8MsgDac200Fid10; + // |159 | 1 |Quality of heading info |headingQuality|b| + }, { + key: "headingQuality", + get: function get() { + return this._bitField.getInt(159, 1, true) == 1; + } + }]); +}(_AisMessage2["default"]); diff --git a/lib/Ais08MsgDac367Fid23.js b/lib/Ais08MsgDac367Fid23.js index e87bdd6..f1448df 100644 --- a/lib/Ais08MsgDac367Fid23.js +++ b/lib/Ais08MsgDac367Fid23.js @@ -1,28 +1,25 @@ -'use strict'; +"use strict"; +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } Object.defineProperty(exports, "__esModule", { - value: true + value: true }); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _AisBitField = require('./AisBitField'); - -var _AisBitField2 = _interopRequireDefault(_AisBitField); - -var _AisMessage2 = require('./AisMessage'); - -var _AisMessage3 = _interopRequireDefault(_AisMessage2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/* +exports["default"] = void 0; +var _AisBitField = _interopRequireDefault(require("./AisBitField")); +var _AisMessage2 = _interopRequireDefault(require("./AisMessage")); +function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } /* * AisParser: A parser for NMEA0183 AIS messages. * Copyright (C) 2025 Davide Gessa . * @@ -38,11 +35,8 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" * You should have received a copy of the Apache License Version 2.0 * along with this program. If not, see . */ - var MOD_NAME = 'Ais8MsgDac367Fid23'; - var SUPPORTED_FIELDS = ['aisType', 'channel', 'repeatInd', 'mmsi', 'dac', 'fid', 'version', 'utcDay', 'utcHour', 'utcMinute', 'longitude', 'latitude', 'airPressure', 'airTemperature', 'avgWindSpeed', 'avgGustSpeed', 'avgWindDirection']; - var suppValuesValid = false; var suppValues = {}; @@ -69,164 +63,143 @@ var suppValues = {}; |167 | 1 |Spare | |u |Not used, set to zero |============================================================================== */ - -var Ais8MsgDac367Fid23 = function (_AisMessage) { - _inherits(Ais8MsgDac367Fid23, _AisMessage); - - function Ais8MsgDac367Fid23(aisType, bitField, channel) { - _classCallCheck(this, Ais8MsgDac367Fid23); - - var _this = _possibleConstructorReturn(this, (Ais8MsgDac367Fid23.__proto__ || Object.getPrototypeOf(Ais8MsgDac367Fid23)).call(this, aisType, bitField, channel)); - - if (bitField.bits == 168) { - _this._valid = 'VALID'; - } else { - _this._valid = 'INVALID'; - _this._errMsg = 'invalid bitcount for type 8 msg dac 1 fid 31:' + bitField.bits; - } - return _this; +var Ais8MsgDac367Fid23 = exports["default"] = /*#__PURE__*/function (_AisMessage) { + function Ais8MsgDac367Fid23(aisType, bitField, channel) { + var _this; + _classCallCheck(this, Ais8MsgDac367Fid23); + _this = _callSuper(this, Ais8MsgDac367Fid23, [aisType, bitField, channel]); + if (bitField.bits == 168) { + _this._valid = 'VALID'; + } else { + _this._valid = 'INVALID'; + _this._errMsg = 'invalid bitcount for type 8 msg dac 1 fid 31:' + bitField.bits; + } + return _this; + } + _inherits(Ais8MsgDac367Fid23, _AisMessage); + return _createClass(Ais8MsgDac367Fid23, [{ + key: "class", + get: function get() { + return 'A'; + } + }, { + key: "supportedValues", + get: function get() { + if (!suppValuesValid) { + SUPPORTED_FIELDS.forEach(function (field) { + var unit = _AisMessage2["default"].getUnit(field); + if (unit) { + suppValues[field] = unit; + } else { + console.warn(MOD_NAME + 'field without unit encountered:' + field); + } + }); + suppValuesValid = true; + } + return suppValues; } - _createClass(Ais8MsgDac367Fid23, [{ - key: '_getRawLon', - - - // |75-99 | 25 |Longitude |lon |I4| Long in 1/1000 min, +-180 deg as per 2's complement (e => +, w => -, 181 not available) - value: function _getRawLon() { - return this._bitField.getInt(75, 25, false) * 10; - } - - // |100-123 | 24 |Latitude |lat |I4| Lat in 1/1000 min, +-90 deg as per 2's complement (n => +, s => -, 91 not available) - - }, { - key: '_getRawLat', - value: function _getRawLat() { - return this._bitField.getInt(100, 24, false) * 10; - } - - // |124-132 | 9 |Air Pressure |air_pressure |u |0=799 hPa/less, 1–401=800–1200 hPa, 402=1201+/N/A=511 - - }, { - key: 'class', - get: function get() { - return 'A'; - } - }, { - key: 'supportedValues', - get: function get() { - if (!suppValuesValid) { - SUPPORTED_FIELDS.forEach(function (field) { - var unit = _AisMessage3.default.getUnit(field); - if (unit) { - suppValues[field] = unit; - } else { - console.warn(MOD_NAME + 'field without unit encountered:' + field); - } - }); - suppValuesValid = true; - } - return suppValues; - } - - // |40-49 | 10 |Designated area code |dac |u| - - }, { - key: 'dac', - get: function get() { - return this._bitField.getInt(40, 10, true); - } - - // |50-55 | 6 |Function identifier |fid |u| - - }, { - key: 'fid', - get: function get() { - return this._bitField.getInt(50, 6, true); - } - - // |56-58 | 3 |Version |version |u| 0=test, 1-7=version - - }, { - key: 'version', - get: function get() { - return this._bitField.getInt(56, 3, true); - } - - // |59-63 | 5 |Day (UTC) |day |u|1-31; 0 = N/A (default) - - }, { - key: 'day', - get: function get() { - var v = this._bitField.getInt(59, 5, true); - return v === 0 ? NaN : v; - } - - // |64-68 | 5 |Hour (UTC) |hour |u|0-23; 24 = N/A (default) - - }, { - key: 'hour', - get: function get() { - var v = this._bitField.getInt(64, 5, true); - return v >= 24 ? NaN : v; - } + // |40-49 | 10 |Designated area code |dac |u| + }, { + key: "dac", + get: function get() { + return this._bitField.getInt(40, 10, true); + } - // |69-74 | 6 |Minute (UTC) |minute |u|0-59; 60 = N/A (default) + // |50-55 | 6 |Function identifier |fid |u| + }, { + key: "fid", + get: function get() { + return this._bitField.getInt(50, 6, true); + } - }, { - key: 'minute', - get: function get() { - var v = this._bitField.getInt(69, 6, true); - return v >= 60 ? NaN : v; - } - }, { - key: 'airPressure', - get: function get() { - var v = this._bitField.getInt(124, 9, true); - if (v === 0) return 799; - if (v === 402) return 1201; - if (v >= 403) return NaN; - return 800 + v; - } + // |56-58 | 3 |Version |version |u| 0=test, 1-7=version + }, { + key: "version", + get: function get() { + return this._bitField.getInt(56, 3, true); + } - // |133-143 | 11 |Air Temperature |air_temp |I4|Dry bulb temp, 0.1°C steps, -60.0 to +60.0°C (-1024=N/A, 601–1023 reserved) + // |59-63 | 5 |Day (UTC) |day |u|1-31; 0 = N/A (default) + }, { + key: "day", + get: function get() { + var v = this._bitField.getInt(59, 5, true); + return v === 0 ? NaN : v; + } - }, { - key: 'airTemperature', - get: function get() { - var v = this._bitField.getInt(133, 11, false); - if (v === -1024) return NaN; - return v / 10.0; - } + // |64-68 | 5 |Hour (UTC) |hour |u|0-23; 24 = N/A (default) + }, { + key: "hour", + get: function get() { + var v = this._bitField.getInt(64, 5, true); + return v >= 24 ? NaN : v; + } - // |144-150 | 7 |Avg 10-min wind speed |avg_wind_speed |u|0-125 knots; 127 = N/A (default) + // |69-74 | 6 |Minute (UTC) |minute |u|0-59; 60 = N/A (default) + }, { + key: "minute", + get: function get() { + var v = this._bitField.getInt(69, 6, true); + return v >= 60 ? NaN : v; + } - }, { - key: 'avgWindSpeed', - get: function get() { - var v = this._bitField.getInt(144, 7, true); - return v >= 127 ? NaN : v; - } + // |75-99 | 25 |Longitude |lon |I4| Long in 1/1000 min, +-180 deg as per 2's complement (e => +, w => -, 181 not available) + }, { + key: "_getRawLon", + value: function _getRawLon() { + return this._bitField.getInt(75, 25, false) * 10; + } - // |151-157 | 7 |Avg 10-min gust speed|avg_gust_speed |u|0-125 knots; 127 = N/A (default) + // |100-123 | 24 |Latitude |lat |I4| Lat in 1/1000 min, +-90 deg as per 2's complement (n => +, s => -, 91 not available) + }, { + key: "_getRawLat", + value: function _getRawLat() { + return this._bitField.getInt(100, 24, false) * 10; + } - }, { - key: 'avgGustSpeed', - get: function get() { - var v = this._bitField.getInt(151, 7, true); - return v >= 127 ? NaN : v; - } + // |124-132 | 9 |Air Pressure |air_pressure |u |0=799 hPa/less, 1–401=800–1200 hPa, 402=1201+/N/A=511 + }, { + key: "airPressure", + get: function get() { + var v = this._bitField.getInt(124, 9, true); + if (v === 0) return 799; + if (v === 402) return 1201; + if (v >= 403) return NaN; + return 800 + v; + } - // |158-166 | 9 |Avg 10-min wind direction|avg_wind_dir |u|0-359 degree; 360 = N/A (default) + // |133-143 | 11 |Air Temperature |air_temp |I4|Dry bulb temp, 0.1°C steps, -60.0 to +60.0°C (-1024=N/A, 601–1023 reserved) + }, { + key: "airTemperature", + get: function get() { + var v = this._bitField.getInt(133, 11, false); + if (v === -1024) return NaN; + return v / 10.0; + } - }, { - key: 'avgWindDirection', - get: function get() { - var v = this._bitField.getInt(158, 9, true); - return v >= 360 ? NaN : v; - } - }]); + // |144-150 | 7 |Avg 10-min wind speed |avg_wind_speed |u|0-125 knots; 127 = N/A (default) + }, { + key: "avgWindSpeed", + get: function get() { + var v = this._bitField.getInt(144, 7, true); + return v >= 127 ? NaN : v; + } - return Ais8MsgDac367Fid23; -}(_AisMessage3.default); + // |151-157 | 7 |Avg 10-min gust speed|avg_gust_speed |u|0-125 knots; 127 = N/A (default) + }, { + key: "avgGustSpeed", + get: function get() { + var v = this._bitField.getInt(151, 7, true); + return v >= 127 ? NaN : v; + } -exports.default = Ais8MsgDac367Fid23; + // |158-166 | 9 |Avg 10-min wind direction|avg_wind_dir |u|0-359 degree; 360 = N/A (default) + }, { + key: "avgWindDirection", + get: function get() { + var v = this._bitField.getInt(158, 9, true); + return v >= 360 ? NaN : v; + } + }]); +}(_AisMessage2["default"]); diff --git a/lib/Ais08MsgDac367Fid24.js b/lib/Ais08MsgDac367Fid24.js index 085eecb..fb2e368 100644 --- a/lib/Ais08MsgDac367Fid24.js +++ b/lib/Ais08MsgDac367Fid24.js @@ -1,28 +1,25 @@ -'use strict'; +"use strict"; +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } Object.defineProperty(exports, "__esModule", { - value: true + value: true }); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _AisBitField = require('./AisBitField'); - -var _AisBitField2 = _interopRequireDefault(_AisBitField); - -var _AisMessage2 = require('./AisMessage'); - -var _AisMessage3 = _interopRequireDefault(_AisMessage2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/* +exports["default"] = void 0; +var _AisBitField = _interopRequireDefault(require("./AisBitField")); +var _AisMessage2 = _interopRequireDefault(require("./AisMessage")); +function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } /* * AisParser: A parser for NMEA0183 AIS messages. * Copyright (C) 2025 Davide Gessa . * @@ -38,11 +35,8 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" * You should have received a copy of the Apache License Version 2.0 * along with this program. If not, see . */ - var MOD_NAME = 'Ais8MsgDac367Fid24'; - var SUPPORTED_FIELDS = ['aisType', 'channel', 'repeatInd', 'mmsi', 'dac', 'fid', 'version', 'utcHour', 'utcMinute', 'longitude', 'latitude', 'airPressure']; - var suppValuesValid = false; var suppValues = {}; @@ -63,118 +57,102 @@ var suppValues = {}; |119-127 | 9 |Air Pressure |air_pressure |u |0=799 hPa/less, 1–401=800–1200 hPa, 402=1201+/N/A=511 |============================================================================== */ - -var Ais8MsgDac367Fid24 = function (_AisMessage) { - _inherits(Ais8MsgDac367Fid24, _AisMessage); - - function Ais8MsgDac367Fid24(aisType, bitField, channel) { - _classCallCheck(this, Ais8MsgDac367Fid24); - - var _this = _possibleConstructorReturn(this, (Ais8MsgDac367Fid24.__proto__ || Object.getPrototypeOf(Ais8MsgDac367Fid24)).call(this, aisType, bitField, channel)); - - if (bitField.bits == 128) { - _this._valid = 'VALID'; - } else { - _this._valid = 'INVALID'; - _this._errMsg = 'invalid bitcount for type 8 msg dac 1 fid 31:' + bitField.bits; - } - return _this; +var Ais8MsgDac367Fid24 = exports["default"] = /*#__PURE__*/function (_AisMessage) { + function Ais8MsgDac367Fid24(aisType, bitField, channel) { + var _this; + _classCallCheck(this, Ais8MsgDac367Fid24); + _this = _callSuper(this, Ais8MsgDac367Fid24, [aisType, bitField, channel]); + if (bitField.bits == 128) { + _this._valid = 'VALID'; + } else { + _this._valid = 'INVALID'; + _this._errMsg = 'invalid bitcount for type 8 msg dac 1 fid 31:' + bitField.bits; + } + return _this; + } + _inherits(Ais8MsgDac367Fid24, _AisMessage); + return _createClass(Ais8MsgDac367Fid24, [{ + key: "class", + get: function get() { + return 'A'; + } + }, { + key: "supportedValues", + get: function get() { + if (!suppValuesValid) { + SUPPORTED_FIELDS.forEach(function (field) { + var unit = _AisMessage2["default"].getUnit(field); + if (unit) { + suppValues[field] = unit; + } else { + console.warn(MOD_NAME + 'field without unit encountered:' + field); + } + }); + suppValuesValid = true; + } + return suppValues; } - _createClass(Ais8MsgDac367Fid24, [{ - key: '_getRawLon', - - - // |70-94 | 25 |Longitude |lon |I4| Long in 1/1000 min, +-180 deg as per 2's complement (e => +, w => -, 181 not available) - value: function _getRawLon() { - return this._bitField.getInt(70, 25, false) * 10; - } - - // |95-118 | 24 |Latitude |lat |I4| Lat in 1/1000 min, +-90 deg as per 2's complement (n => +, s => -, 91 not available) - - }, { - key: '_getRawLat', - value: function _getRawLat() { - return this._bitField.getInt(95, 24, false) * 10; - } - - // |119-127 | 9 |Air Pressure |air_pressure |u |0=799 hPa/less, 1–401=800–1200 hPa, 402=1201+/N/A=511 - - }, { - key: 'class', - get: function get() { - return 'A'; - } - }, { - key: 'supportedValues', - get: function get() { - if (!suppValuesValid) { - SUPPORTED_FIELDS.forEach(function (field) { - var unit = _AisMessage3.default.getUnit(field); - if (unit) { - suppValues[field] = unit; - } else { - console.warn(MOD_NAME + 'field without unit encountered:' + field); - } - }); - suppValuesValid = true; - } - return suppValues; - } - - // |40-49 | 10 |Designated area code |dac |u| - - }, { - key: 'dac', - get: function get() { - return this._bitField.getInt(40, 10, true); - } - - // |50-55 | 6 |Function identifier |fid |u| - - }, { - key: 'fid', - get: function get() { - return this._bitField.getInt(50, 6, true); - } - - // |56-58 | 3 |Version |version |u| 0=test, 1-7=version + // |40-49 | 10 |Designated area code |dac |u| + }, { + key: "dac", + get: function get() { + return this._bitField.getInt(40, 10, true); + } - }, { - key: 'version', - get: function get() { - return this._bitField.getInt(56, 3, true); - } + // |50-55 | 6 |Function identifier |fid |u| + }, { + key: "fid", + get: function get() { + return this._bitField.getInt(50, 6, true); + } - // |59-63 | 5 |Hour (UTC) |hour |u|0-23; 24 = N/A (default) + // |56-58 | 3 |Version |version |u| 0=test, 1-7=version + }, { + key: "version", + get: function get() { + return this._bitField.getInt(56, 3, true); + } - }, { - key: 'hour', - get: function get() { - var v = this._bitField.getInt(59, 5, true); - return v >= 24 ? NaN : v; - } + // |59-63 | 5 |Hour (UTC) |hour |u|0-23; 24 = N/A (default) + }, { + key: "hour", + get: function get() { + var v = this._bitField.getInt(59, 5, true); + return v >= 24 ? NaN : v; + } - // |64-69 | 6 |Minute (UTC) |minute |u|0-59; 60 = N/A (default) + // |64-69 | 6 |Minute (UTC) |minute |u|0-59; 60 = N/A (default) + }, { + key: "minute", + get: function get() { + var v = this._bitField.getInt(64, 6, true); + return v >= 60 ? NaN : v; + } - }, { - key: 'minute', - get: function get() { - var v = this._bitField.getInt(64, 6, true); - return v >= 60 ? NaN : v; - } - }, { - key: 'airPressure', - get: function get() { - var v = this._bitField.getInt(119, 9, true); - if (v === 0) return 799; - if (v === 402) return 1201; - if (v >= 403) return NaN; - return 800 + v; - } - }]); + // |70-94 | 25 |Longitude |lon |I4| Long in 1/1000 min, +-180 deg as per 2's complement (e => +, w => -, 181 not available) + }, { + key: "_getRawLon", + value: function _getRawLon() { + return this._bitField.getInt(70, 25, false) * 10; + } - return Ais8MsgDac367Fid24; -}(_AisMessage3.default); + // |95-118 | 24 |Latitude |lat |I4| Lat in 1/1000 min, +-90 deg as per 2's complement (n => +, s => -, 91 not available) + }, { + key: "_getRawLat", + value: function _getRawLat() { + return this._bitField.getInt(95, 24, false) * 10; + } -exports.default = Ais8MsgDac367Fid24; + // |119-127 | 9 |Air Pressure |air_pressure |u |0=799 hPa/less, 1–401=800–1200 hPa, 402=1201+/N/A=511 + }, { + key: "airPressure", + get: function get() { + var v = this._bitField.getInt(119, 9, true); + if (v === 0) return 799; + if (v === 402) return 1201; + if (v >= 403) return NaN; + return 800 + v; + } + }]); +}(_AisMessage2["default"]); diff --git a/lib/Ais09Msg.js b/lib/Ais09Msg.js index a8885ec..b1675dc 100644 --- a/lib/Ais09Msg.js +++ b/lib/Ais09Msg.js @@ -1,28 +1,25 @@ -'use strict'; +"use strict"; +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } Object.defineProperty(exports, "__esModule", { value: true }); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _AisBitField = require('./AisBitField'); - -var _AisBitField2 = _interopRequireDefault(_AisBitField); - -var _AisMessage2 = require('./AisMessage'); - -var _AisMessage3 = _interopRequireDefault(_AisMessage2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/* +exports["default"] = void 0; +var _AisBitField = _interopRequireDefault(require("./AisBitField")); +var _AisMessage2 = _interopRequireDefault(require("./AisMessage")); +function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } /* * AisParser: A parser for NMEA0183 AIS messages. * Copyright (C) 2026 Davide Gessa . * @@ -38,7 +35,6 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" * You should have received a copy of the Apache License Version 2.0 * along with this program. If not, see . */ - var MOD_NAME = 'Ais09Msg'; /* @@ -67,18 +63,13 @@ Total: 168 bits */ var SUPPORTED_FIELDS = ['aisType', 'channel', 'repeatInd', 'mmsi', 'midCountry', 'midCountryIso', 'mmsiType', 'altitude', 'altitudeStatus', 'sogStatus', 'sog', 'posAccuracy', 'longitude', 'latitude', 'cog', 'utcTsSec', 'utcTsStatus', 'altitudeSensor', 'dte', 'assignedMode', 'raim']; - var suppValuesValid = false; var suppValues = {}; - -var Ais09Msg = function (_AisMessage) { - _inherits(Ais09Msg, _AisMessage); - +var Ais09Msg = exports["default"] = /*#__PURE__*/function (_AisMessage) { function Ais09Msg(aisType, bitField, channel) { + var _this; _classCallCheck(this, Ais09Msg); - - var _this = _possibleConstructorReturn(this, (Ais09Msg.__proto__ || Object.getPrototypeOf(Ais09Msg)).call(this, aisType, bitField, channel)); - + _this = _callSuper(this, Ais09Msg, [aisType, bitField, channel]); if (bitField.bits >= 168) { _this._valid = 'VALID'; } else { @@ -87,40 +78,86 @@ var Ais09Msg = function (_AisMessage) { } return _this; } - - _createClass(Ais09Msg, [{ - key: '_getRawAltitude', - + _inherits(Ais09Msg, _AisMessage); + return _createClass(Ais09Msg, [{ + key: "supportedValues", + get: function get() { + if (!suppValuesValid) { + SUPPORTED_FIELDS.forEach(function (field) { + var unit = _AisMessage2["default"].getUnit(field); + if (unit) { + suppValues[field] = unit; + } else { + console.warn(MOD_NAME + ' field without unit encountered:' + field); + } + }); + suppValuesValid = true; + } + return suppValues; + } + }, { + key: "class", + get: function get() { + return 'SAR'; + } // Altitude: 12 bits at position 38 // 0-4094 = altitude in meters // 4095 = not available + }, { + key: "_getRawAltitude", value: function _getRawAltitude() { return this._bitField.getInt(38, 12, true); } }, { - key: '_getRawSog', - + key: "altitudeStatus", + get: function get() { + var alt = this._getRawAltitude(); + if (alt === 4095) return 'NA'; + if (alt === 4094) return 'HIGH'; + return 'VALID'; + } + }, { + key: "altitude", + get: function get() { + var alt = this._getRawAltitude(); + if (alt >= 4094) return NaN; + return alt; + } // SOG: 10 bits at position 50 // 0-1022 = speed in knots (no decimal) // 1023 = not available + }, { + key: "_getRawSog", value: function _getRawSog() { return this._bitField.getInt(50, 10, true); } }, { - key: '_getRawLon', + key: "sog", + get: function get() { + var sog = this._getRawSog(); + if (sog >= 1023) return NaN; + return sog; + } + // Position Accuracy: 1 bit at position 60 + }, { + key: "posAccuracy", + get: function get() { + return this._bitField.getInt(60, 1, true) === 1; + } // Longitude: 28 bits at position 61 + }, { + key: "_getRawLon", value: function _getRawLon() { return this._bitField.getInt(61, 28, false); } // Latitude: 27 bits at position 89 - }, { - key: '_getRawLat', + key: "_getRawLat", value: function _getRawLat() { return this._bitField.getInt(89, 27, false); } @@ -128,126 +165,63 @@ var Ais09Msg = function (_AisMessage) { // COG: 12 bits at position 116 // 0-3599 = 0.0-359.9 degrees // 3600 = not available - }, { - key: '_getRawCog', + key: "_getRawCog", value: function _getRawCog() { return this._bitField.getInt(116, 12, true); } // UTC Timestamp: 6 bits at position 128 - }, { - key: '_getUtcSec', + key: "_getUtcSec", value: function _getUtcSec() { return this._bitField.getInt(128, 6, true); } // Altitude Sensor: 1 bit at position 134 // 0 = GNSS, 1 = barometric - - }, { - key: 'supportedValues', - get: function get() { - if (!suppValuesValid) { - SUPPORTED_FIELDS.forEach(function (field) { - var unit = _AisMessage3.default.getUnit(field); - if (unit) { - suppValues[field] = unit; - } else { - console.warn(MOD_NAME + ' field without unit encountered:' + field); - } - }); - suppValuesValid = true; - } - return suppValues; - } }, { - key: 'class', - get: function get() { - return 'SAR'; - } - }, { - key: 'altitudeStatus', - get: function get() { - var alt = this._getRawAltitude(); - if (alt === 4095) return 'NA'; - if (alt === 4094) return 'HIGH'; - return 'VALID'; - } - }, { - key: 'altitude', - get: function get() { - var alt = this._getRawAltitude(); - if (alt >= 4094) return NaN; - return alt; - } - }, { - key: 'sog', - get: function get() { - var sog = this._getRawSog(); - if (sog >= 1023) return NaN; - return sog; - } - - // Position Accuracy: 1 bit at position 60 - - }, { - key: 'posAccuracy', - get: function get() { - return this._bitField.getInt(60, 1, true) === 1; - } - }, { - key: 'altitudeSensor', + key: "altitudeSensor", get: function get() { return this._bitField.getInt(134, 1, true); } // DTE: 1 bit at position 142 // 0 = data terminal available, 1 = not available - }, { - key: 'dte', + key: "dte", get: function get() { return this._bitField.getInt(142, 1, true) === 0; } // Assigned Mode Flag: 1 bit at position 146 // 0 = autonomous/continuous mode, 1 = assigned mode - }, { - key: 'assignedMode', + key: "assignedMode", get: function get() { return this._bitField.getInt(146, 1, true) === 1; } // RAIM Flag: 1 bit at position 147 - }, { - key: 'raim', + key: "raim", get: function get() { return this._bitField.getInt(147, 1, true) === 1; } // Communication State Selector: 1 bit at position 148 // 0 = SOTDMA, 1 = ITDMA - }, { - key: 'commStateSelector', + key: "commStateSelector", get: function get() { return this._bitField.getInt(148, 1, true); } // Communication State: 19 bits at position 149 - }, { - key: 'commState', + key: "commState", get: function get() { return this._bitField.getInt(149, 19, true); } }]); - - return Ais09Msg; -}(_AisMessage3.default); - -exports.default = Ais09Msg; +}(_AisMessage2["default"]); diff --git a/lib/Ais14Msg.js b/lib/Ais14Msg.js index 5eb5674..3d98866 100644 --- a/lib/Ais14Msg.js +++ b/lib/Ais14Msg.js @@ -1,28 +1,25 @@ -'use strict'; +"use strict"; +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } Object.defineProperty(exports, "__esModule", { - value: true + value: true }); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _AisBitField = require('./AisBitField'); - -var _AisBitField2 = _interopRequireDefault(_AisBitField); - -var _AisMessage2 = require('./AisMessage'); - -var _AisMessage3 = _interopRequireDefault(_AisMessage2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/* +exports["default"] = void 0; +var _AisBitField = _interopRequireDefault(require("./AisBitField")); +var _AisMessage2 = _interopRequireDefault(require("./AisMessage")); +function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } /* * AisParser: A parser for NMEA0183 AIS messages. * Copyright (C) 2017 Thomas Runte . * @@ -38,11 +35,8 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" * You should have received a copy of the Apache License Version 2.0 * along with this program. If not, see . */ - var MOD_NAME = 'Ais14Msg'; - var SUPPORTED_FIELDS = ['aisType', 'channel', 'repeatInd', 'mmsi', 'text']; - var suppValuesValid = false; var suppValues = {}; @@ -57,59 +51,50 @@ var suppValues = {}; |============================================================================== */ - -var Ais14Msg = function (_AisMessage) { - _inherits(Ais14Msg, _AisMessage); - - function Ais14Msg(aisType, bitField, channel) { - _classCallCheck(this, Ais14Msg); - - var _this = _possibleConstructorReturn(this, (Ais14Msg.__proto__ || Object.getPrototypeOf(Ais14Msg)).call(this, aisType, bitField, channel)); - - if (bitField.bits >= 40 && bitField.bits <= 1008) { - _this._valid = 'VALID'; - } else { - _this._valid = 'INVALID'; - _this._errMsg = 'invalid bitcount for type 14 msg:' + bitField.bits; - } - return _this; +var Ais14Msg = exports["default"] = /*#__PURE__*/function (_AisMessage) { + function Ais14Msg(aisType, bitField, channel) { + var _this; + _classCallCheck(this, Ais14Msg); + _this = _callSuper(this, Ais14Msg, [aisType, bitField, channel]); + if (bitField.bits >= 40 && bitField.bits <= 1008) { + _this._valid = 'VALID'; + } else { + _this._valid = 'INVALID'; + _this._errMsg = 'invalid bitcount for type 14 msg:' + bitField.bits; + } + return _this; + } + _inherits(Ais14Msg, _AisMessage); + return _createClass(Ais14Msg, [{ + key: "class", + get: function get() { + return 'A'; + } + }, { + key: "supportedValues", + get: function get() { + if (!suppValuesValid) { + SUPPORTED_FIELDS.forEach(function (field) { + var unit = _AisMessage2["default"].getUnit(field); + if (unit) { + suppValues[field] = unit; + } else { + console.warn(MOD_NAME + 'field without unit encountered:' + field); + } + }); + suppValuesValid = true; + } + return suppValues; } - _createClass(Ais14Msg, [{ - key: 'class', - get: function get() { - return 'A'; - } - }, { - key: 'supportedValues', - get: function get() { - if (!suppValuesValid) { - SUPPORTED_FIELDS.forEach(function (field) { - var unit = _AisMessage3.default.getUnit(field); - if (unit) { - suppValues[field] = unit; - } else { - console.warn(MOD_NAME + 'field without unit encountered:' + field); - } - }); - suppValuesValid = true; - } - return suppValues; - } - - // |40-... | <=968 |Name |text |s|max of 968 6-bit characters - - }, { - key: 'text', - get: function get() { - var textStart = 40; - var maxTextBits = Math.min(this._bitField.bits - textStart, 968); - var textLength = maxTextBits - maxTextBits % 6; - return this._formatStr(this._bitField.getString(textStart, textLength).replace(/^@+/, '')); - } - }]); - - return Ais14Msg; -}(_AisMessage3.default); - -exports.default = Ais14Msg; + // |40-... | <=968 |Name |text |s|max of 968 6-bit characters + }, { + key: "text", + get: function get() { + var textStart = 40; + var maxTextBits = Math.min(this._bitField.bits - textStart, 968); + var textLength = maxTextBits - maxTextBits % 6; + return this._formatStr(this._bitField.getString(textStart, textLength).replace(/^@+/, '')); + } + }]); +}(_AisMessage2["default"]); diff --git a/lib/Ais18Msg.js b/lib/Ais18Msg.js index d4ee54c..7843738 100644 --- a/lib/Ais18Msg.js +++ b/lib/Ais18Msg.js @@ -1,28 +1,25 @@ -'use strict'; +"use strict"; +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } Object.defineProperty(exports, "__esModule", { value: true }); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _AisBitField = require('./AisBitField'); - -var _AisBitField2 = _interopRequireDefault(_AisBitField); - -var _AisMessage2 = require('./AisMessage'); - -var _AisMessage3 = _interopRequireDefault(_AisMessage2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/* +exports["default"] = void 0; +var _AisBitField = _interopRequireDefault(require("./AisBitField")); +var _AisMessage2 = _interopRequireDefault(require("./AisMessage")); +function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } /* * AisParser: A parser for NMEA0183 AIS messages. * Copyright (C) 2017 Thomas Runte . * @@ -38,7 +35,6 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" * You should have received a copy of the Apache License Version 2.0 * along with this program. If not, see . */ - var MOD_NAME = 'Ais18Msg'; /* @@ -81,15 +77,11 @@ TODO: var SUPPORTED_FIELDS = ['aisType', 'channel', 'repeatInd', 'mmsi', 'midCountry', 'midCountryIso', 'mmsiType', 'heading', 'sogStatus', 'sog', 'cog', 'latitude', 'longitude', 'posAccuracy', 'utcTsSec', 'utcTsStatus']; var suppValuesValid = false; var suppValues = {}; - -var Ais18Msg = function (_AisMessage) { - _inherits(Ais18Msg, _AisMessage); - +var Ais18Msg = exports["default"] = /*#__PURE__*/function (_AisMessage) { function Ais18Msg(aisType, bitField, channel) { + var _this; _classCallCheck(this, Ais18Msg); - - var _this = _possibleConstructorReturn(this, (Ais18Msg.__proto__ || Object.getPrototypeOf(Ais18Msg)).call(this, aisType, bitField, channel)); - + _this = _callSuper(this, Ais18Msg, [aisType, bitField, channel]); if (bitField.bits >= 167) { _this._valid = 'VALID'; } else { @@ -98,66 +90,62 @@ var Ais18Msg = function (_AisMessage) { } return _this; } - - _createClass(Ais18Msg, [{ - key: '_getRawHeading', + _inherits(Ais18Msg, _AisMessage); + return _createClass(Ais18Msg, [{ + key: "supportedValues", + get: function get() { + if (!suppValuesValid) { + SUPPORTED_FIELDS.forEach(function (field) { + var unit = _AisMessage2["default"].getUnit(field); + if (unit) { + suppValues[field] = unit; + } else { + console.warn(MOD_NAME + 'field without unit encountered:' + field); + } + }); + suppValuesValid = true; + } + return suppValues; + } + }, { + key: "class", + get: function get() { + return 'B'; + } + }, { + key: "_getRawHeading", value: function _getRawHeading() { return this._bitField.getInt(124, 9, true); } }, { - key: '_getRawSog', + key: "_getRawSog", value: function _getRawSog() { return this._bitField.getInt(46, 10, true); } }, { - key: '_getRawCog', + key: "_getRawCog", value: function _getRawCog() { return this._bitField.getInt(112, 12, true); } }, { - key: '_getUtcSec', + key: "posAccuracy", + get: function get() { + return this._bitField.getInt(56, 1, true) === 1; + } + }, { + key: "_getUtcSec", value: function _getUtcSec() { return this._bitField.getInt(133, 6, true); } }, { - key: '_getRawLat', + key: "_getRawLat", value: function _getRawLat() { return this._bitField.getInt(85, 27, false); } }, { - key: '_getRawLon', + key: "_getRawLon", value: function _getRawLon() { return this._bitField.getInt(57, 28, false); } - }, { - key: 'supportedValues', - get: function get() { - if (!suppValuesValid) { - SUPPORTED_FIELDS.forEach(function (field) { - var unit = _AisMessage3.default.getUnit(field); - if (unit) { - suppValues[field] = unit; - } else { - console.warn(MOD_NAME + 'field without unit encountered:' + field); - } - }); - suppValuesValid = true; - } - return suppValues; - } - }, { - key: 'class', - get: function get() { - return 'B'; - } - }, { - key: 'posAccuracy', - get: function get() { - return this._bitField.getInt(56, 1, true) === 1; - } }]); - - return Ais18Msg; -}(_AisMessage3.default); - -exports.default = Ais18Msg; +}(_AisMessage2["default"]); diff --git a/lib/Ais19Msg.js b/lib/Ais19Msg.js index cb27cc7..8874dec 100644 --- a/lib/Ais19Msg.js +++ b/lib/Ais19Msg.js @@ -1,28 +1,25 @@ -'use strict'; +"use strict"; +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } Object.defineProperty(exports, "__esModule", { value: true }); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _AisBitField = require('./AisBitField'); - -var _AisBitField2 = _interopRequireDefault(_AisBitField); - -var _AisMessage2 = require('./AisMessage'); - -var _AisMessage3 = _interopRequireDefault(_AisMessage2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/* +exports["default"] = void 0; +var _AisBitField = _interopRequireDefault(require("./AisBitField")); +var _AisMessage2 = _interopRequireDefault(require("./AisMessage")); +function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } /* * AisParser: A parser for NMEA0183 AIS messages. * Copyright (C) 2017 Thomas Runte . * @@ -38,7 +35,6 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" * You should have received a copy of the Apache License Version 2.0 * along with this program. If not, see . */ - var MOD_NAME = 'Ais21Msg'; /* |============================================================================== @@ -72,18 +68,13 @@ var MOD_NAME = 'Ais21Msg'; |============================================================================== */ var SUPPORTED_FIELDS = ['aisType', 'channel', 'repeatInd', 'mmsi', 'midCountry', 'midCountryIso', 'mmsiType', 'class', 'heading', 'sogStatus', 'sog', 'cog', 'latitude', 'longitude', 'posAccuracy', 'utcTsSec', 'utcTsStatus', 'name', 'shipType', 'shipTypeStr', 'dimToBow', 'dimToBowStatus', 'dimToStern', 'dimToSternStatus', 'dimToPort', 'dimToPortStatus', 'dimToStbrd', 'dimToStbrdStatus', 'epfd', 'epfdStr']; - var suppValuesValid = false; var suppValues = {}; - -var Ais19Msg = function (_AisMessage) { - _inherits(Ais19Msg, _AisMessage); - +var Ais19Msg = exports["default"] = /*#__PURE__*/function (_AisMessage) { function Ais19Msg(aisType, bitField, channel) { + var _this; _classCallCheck(this, Ais19Msg); - - var _this = _possibleConstructorReturn(this, (Ais19Msg.__proto__ || Object.getPrototypeOf(Ais19Msg)).call(this, aisType, bitField, channel)); - + _this = _callSuper(this, Ais19Msg, [aisType, bitField, channel]); if (bitField.bits >= 311) { _this._valid = 'VALID'; } else { @@ -92,143 +83,125 @@ var Ais19Msg = function (_AisMessage) { } return _this; } - - _createClass(Ais19Msg, [{ - key: '_getRawHeading', - + _inherits(Ais19Msg, _AisMessage); + return _createClass(Ais19Msg, [{ + key: "supportedValues", + get: function get() { + if (!suppValuesValid) { + SUPPORTED_FIELDS.forEach(function (field) { + var unit = _AisMessage2["default"].getUnit(field); + if (unit) { + suppValues[field] = unit; + } else { + console.warn(MOD_NAME + 'field without unit encountered:' + field); + } + }); + suppValuesValid = true; + } + return suppValues; + } + }, { + key: "class", + get: function get() { + return 'B'; + } // |124-132 | 9 |True Heading |heading |u|0 to 359 degrees, + }, { + key: "_getRawHeading", value: function _getRawHeading() { return this._bitField.getInt(124, 9, true); } //|46-55 | 10 |Speed Over Ground |speed |u|As in CNB. - }, { - key: '_getRawSog', + key: "_getRawSog", value: function _getRawSog() { return this._bitField.getInt(46, 10, true); } // |112-123 | 12 |Course Over Ground |course |U1|Relative to true north, - }, { - key: '_getRawCog', + key: "_getRawCog", value: function _getRawCog() { return this._bitField.getInt(112, 12, true); } // |56-56 | 1 |Position Accuracy |accuracy |b|As in CNB. - }, { - key: '_getUtcSec', - + key: "posAccuracy", + get: function get() { + return this._bitField.getInt(56, 1, true) === 1; + } // |133-138 | 6 |Time Stamp |second |u|Second of UTC timestamp. + }, { + key: "_getUtcSec", value: function _getUtcSec() { return this._bitField.getInt(133, 6, true); } // |85-111 | 27 |Latitude |lat |I4|Minutes/10000 (as in CNB) - }, { - key: '_getRawLat', + key: "_getRawLat", value: function _getRawLat() { return this._bitField.getInt(85, 27, false); } // |57-84 | 28 |Longitude |lon |I4|Minutes/10000 (as in CNB) - }, { - key: '_getRawLon', + key: "_getRawLon", value: function _getRawLon() { return this._bitField.getInt(57, 28, false); } // |143-262 |120 |Name |shipname |s|20 6-bit characters - }, { - key: '_getDimToBow', + key: "name", + get: function get() { + return this._formatStr(this._bitField.getString(143, 120)); + } + // |263-270 | 8 |Type of ship and cargo |shiptype |u|As in Message 5 + }, { + key: "shipType", + get: function get() { + return this._bitField.getInt(263, 8, true); + } // |271-279 | 9 |Dimension to Bow |to_bow |u|Meters + }, { + key: "_getDimToBow", value: function _getDimToBow() { return this._bitField.getInt(271, 9, true); } // |280-288 | 9 |Dimension to Stern |to_stern |u|Meters - }, { - key: '_getDimToStern', + key: "_getDimToStern", value: function _getDimToStern() { return this._bitField.getInt(280, 9, true); } // |289-294 | 6 |Dimension to Port |to_port |u|Meters - }, { - key: '_getDimToPort', + key: "_getDimToPort", value: function _getDimToPort() { return this._bitField.getInt(289, 6, true); } // |295-300 | 6 |Dimension to Starboard |to_starboard |u|Meters - }, { - key: '_getDimToStbrd', + key: "_getDimToStbrd", value: function _getDimToStbrd() { return this._bitField.getInt(295, 6, true); } // |301-304 | 4 |Position Fix Type |epfd |e|See "EPFD Fix Types" - }, { - key: 'supportedValues', - get: function get() { - if (!suppValuesValid) { - SUPPORTED_FIELDS.forEach(function (field) { - var unit = _AisMessage3.default.getUnit(field); - if (unit) { - suppValues[field] = unit; - } else { - console.warn(MOD_NAME + 'field without unit encountered:' + field); - } - }); - suppValuesValid = true; - } - return suppValues; - } - }, { - key: 'class', - get: function get() { - return 'B'; - } - }, { - key: 'posAccuracy', - get: function get() { - return this._bitField.getInt(56, 1, true) === 1; - } - }, { - key: 'name', - get: function get() { - return this._formatStr(this._bitField.getString(143, 120)); - } - - // |263-270 | 8 |Type of ship and cargo |shiptype |u|As in Message 5 - - }, { - key: 'shipType', - get: function get() { - return this._bitField.getInt(263, 8, true); - } - }, { - key: 'epfd', + key: "epfd", get: function get() { return this._bitField.getInt(301, 4, true); } }]); - - return Ais19Msg; -}(_AisMessage3.default); - -exports.default = Ais19Msg; +}(_AisMessage2["default"]); diff --git a/lib/Ais21Msg.js b/lib/Ais21Msg.js index b972cdd..d2c6410 100644 --- a/lib/Ais21Msg.js +++ b/lib/Ais21Msg.js @@ -1,28 +1,25 @@ -'use strict'; +"use strict"; +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } Object.defineProperty(exports, "__esModule", { value: true }); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _AisBitField = require('./AisBitField'); - -var _AisBitField2 = _interopRequireDefault(_AisBitField); - -var _AisMessage2 = require('./AisMessage'); - -var _AisMessage3 = _interopRequireDefault(_AisMessage2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/* +exports["default"] = void 0; +var _AisBitField = _interopRequireDefault(require("./AisBitField")); +var _AisMessage2 = _interopRequireDefault(require("./AisMessage")); +function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } /* * AisParser: A parser for NMEA0183 AIS messages. * Copyright (C) 2017 Thomas Runte . * @@ -38,7 +35,6 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" * You should have received a copy of the Apache License Version 2.0 * along with this program. If not, see . */ - var MOD_NAME = 'Ais21Msg'; /* |============================================================================== @@ -68,18 +64,13 @@ var MOD_NAME = 'Ais21Msg'; */ var SUPPORTED_FIELDS = ['aisType', 'channel', 'repeatInd', 'mmsi', 'midCountry', 'midCountryIso', 'mmsiType', 'name', 'latitude', 'longitude', 'posAccuracy', 'dimToBow', 'dimToBowStatus', 'dimToStern', 'dimToSternStatus', 'dimToPort', 'dimToPortStatus', 'dimToStbrd', 'dimToStbrdStatus', 'length', 'width', 'epfd', 'epfdStr', 'utcTsSec', 'utcTsStatus', 'offPosInd', 'aidType', 'aidTypeStr', 'nameExt']; - var suppValuesValid = false; var suppValues = {}; - -var Ais21Msg = function (_AisMessage) { - _inherits(Ais21Msg, _AisMessage); - +var Ais21Msg = exports["default"] = /*#__PURE__*/function (_AisMessage) { function Ais21Msg(aisType, bitField, channel) { + var _this; _classCallCheck(this, Ais21Msg); - - var _this = _possibleConstructorReturn(this, (Ais21Msg.__proto__ || Object.getPrototypeOf(Ais21Msg)).call(this, aisType, bitField, channel)); - + _this = _callSuper(this, Ais21Msg, [aisType, bitField, channel]); if (bitField.bits >= 271) { _this._valid = 'VALID'; } else { @@ -88,116 +79,104 @@ var Ais21Msg = function (_AisMessage) { } return _this; } + _inherits(Ais21Msg, _AisMessage); + return _createClass(Ais21Msg, [{ + key: "supportedValues", + get: function get() { + if (!suppValuesValid) { + SUPPORTED_FIELDS.forEach(function (field) { + var unit = _AisMessage2["default"].getUnit(field); + if (unit) { + suppValues[field] = unit; + } else { + console.warn(MOD_NAME + 'field without unit encountered:' + field); + } + }); + suppValuesValid = true; + } + return suppValues; + } - _createClass(Ais21Msg, [{ - key: '_getRawLon', + // |38-42 | 5 |Aid type |aid_type |e|See "Navaid Types" + }, { + key: "aidType", + get: function get() { + return this._bitField.getInt(38, 5, true); + } + + // |43-162 1|120 |Name |name |t|Name in sixbit chars + }, { + key: "name", + get: function get() { + return this._formatStr(this._bitField.getString(43, 162)); + } + // |163-163 | 1 |Position Accuracy |accuracy |b|As in CNB + }, { + key: "posAccuracy", + get: function get() { + return this._bitField.getInt(163, 1, true) === 1; + } // |164-191 |28 |Longitude |lon |I4|Minutes/10000 (as in CNB) + }, { + key: "_getRawLon", value: function _getRawLon() { return this._bitField.getInt(164, 28, false); } //|192-218 |27 |Latitude |lat |I4|Minutes/10000 (as in CNB) - }, { - key: '_getRawLat', + key: "_getRawLat", value: function _getRawLat() { return this._bitField.getInt(192, 27, false); } // |219-227 | 9 |Dimension to Bow |to_bow |u|Meters - }, { - key: '_getDimToBow', + key: "_getDimToBow", value: function _getDimToBow() { return this._bitField.getInt(219, 9, true); } // |228-236 | 9 |Dimension to Stern |to_stern |u|Meters - }, { - key: '_getDimToStern', + key: "_getDimToStern", value: function _getDimToStern() { return this._bitField.getInt(228, 9, true); } // |237-242 | 6 |Dimension to Port |to_port |u|Meters - }, { - key: '_getDimToPort', + key: "_getDimToPort", value: function _getDimToPort() { return this._bitField.getInt(237, 6, true); } // |243-248 | 6 |Dimension to Starboard |to_starboard|u|Meters - }, { - key: '_getDimToStbrd', + key: "_getDimToStbrd", value: function _getDimToStbrd() { return this._bitField.getInt(243, 6, true); } // |249-252 | 4 |Type of EPFD |epfd |e|As in Message Type 4 - }, { - key: '_getUtcSec', - + key: "epfd", + get: function get() { + return this._bitField.getInt(249, 4, true); + } // |253-258 | 6 |UTC Second |second |u|As in Message Type 5 + }, { + key: "_getUtcSec", value: function _getUtcSec() { return this._bitField.getInt(253, 6, true); } // |259-259 | 1 |Off-Position Indicator |off_position|b|See Below - - }, { - key: 'supportedValues', - get: function get() { - if (!suppValuesValid) { - SUPPORTED_FIELDS.forEach(function (field) { - var unit = _AisMessage3.default.getUnit(field); - if (unit) { - suppValues[field] = unit; - } else { - console.warn(MOD_NAME + 'field without unit encountered:' + field); - } - }); - suppValuesValid = true; - } - return suppValues; - } - - // |38-42 | 5 |Aid type |aid_type |e|See "Navaid Types" - }, { - key: 'aidType', - get: function get() { - return this._bitField.getInt(38, 5, true); - } - - // |43-162 1|120 |Name |name |t|Name in sixbit chars - - }, { - key: 'name', - get: function get() { - return this._formatStr(this._bitField.getString(43, 162)); - } - - // |163-163 | 1 |Position Accuracy |accuracy |b|As in CNB - - }, { - key: 'posAccuracy', - get: function get() { - return this._bitField.getInt(163, 1, true) === 1; - } - }, { - key: 'epfd', - get: function get() { - return this._bitField.getInt(249, 4, true); - } - }, { - key: 'offPosInd', + key: "offPosInd", get: function get() { if (this._getUtcSec() < 60) { return this._bitField.getInt(163, 1, true) === 0 ? 'IN_POS' : 'OFF_POS'; @@ -207,9 +186,8 @@ var Ais21Msg = function (_AisMessage) { } // |272-360 |88 |Name Extension | |t|See Below - }, { - key: 'nameExt', + key: "nameExt", get: function get() { if (this._bitField.bits > 272) { var chars = Math.floor((this._bitField.bits - 272) / 6); @@ -220,8 +198,4 @@ var Ais21Msg = function (_AisMessage) { return ''; } }]); - - return Ais21Msg; -}(_AisMessage3.default); - -exports.default = Ais21Msg; +}(_AisMessage2["default"]); diff --git a/lib/Ais24Msg.js b/lib/Ais24Msg.js index 7fd13e6..7cb5cd1 100644 --- a/lib/Ais24Msg.js +++ b/lib/Ais24Msg.js @@ -1,28 +1,25 @@ -'use strict'; +"use strict"; +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } Object.defineProperty(exports, "__esModule", { value: true }); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _AisBitField = require('./AisBitField'); - -var _AisBitField2 = _interopRequireDefault(_AisBitField); - -var _AisMessage2 = require('./AisMessage'); - -var _AisMessage3 = _interopRequireDefault(_AisMessage2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/* +exports["default"] = void 0; +var _AisBitField = _interopRequireDefault(require("./AisBitField")); +var _AisMessage2 = _interopRequireDefault(require("./AisMessage")); +function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } /* * AisParser: A parser for NMEA0183 AIS messages. * Copyright (C) 2017 Thomas Runte . * @@ -38,15 +35,10 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" * You should have received a copy of the Apache License Version 2.0 * along with this program. If not, see . */ - var MOD_NAME = 'Ais24Msg'; - var SUPPORTED_FIELDS_A = ['aisType', 'channel', 'repeatInd', 'mmsi', 'midCountry', 'midCountryIso', 'mmsiType', 'partNo', 'name']; - var SUPPORTED_FIELDS_B_NO_TENDER = ['aisType', 'channel', 'repeatInd', 'mmsi', 'midCountry', 'midCountryIso', 'mmsiType', 'partNo', 'shipType', 'callSign', 'vendorId', 'dimToBow', 'dimToBowStatus', 'dimToStern', 'dimToSternStatus', 'dimToPort', 'dimToPortStatus', 'dimToStbrd', 'dimToStbrdStatus']; - var SUPPORTED_FIELDS_B_TENDER = ['aisType', 'channel', 'repeatInd', 'mmsi', 'midCountry', 'midCountryIso', 'mmsiType', 'partNo', 'shipType', 'callSign', 'vendorId', 'mothershipMmsi']; - var suppValuesValidA = false; var suppValuesA = {}; var suppValuesValidBNT = false; @@ -74,18 +66,13 @@ var suppValuesBNT = {}; |162-167 | 6 | Spare | |x|(Part B) Not used |=============================================================================== */ - -var Ais24Msg = function (_AisMessage) { - _inherits(Ais24Msg, _AisMessage); - +var Ais24Msg = exports["default"] = /*#__PURE__*/function (_AisMessage) { function Ais24Msg(aisType, bitField, channel) { + var _this; _classCallCheck(this, Ais24Msg); - - var _this = _possibleConstructorReturn(this, (Ais24Msg.__proto__ || Object.getPrototypeOf(Ais24Msg)).call(this, aisType, bitField, channel)); - + _this = _callSuper(this, Ais24Msg, [aisType, bitField, channel]); if (bitField.bits >= 39) { _this._partNo = _this._bitField.getInt(38, 2, true) ? 1 : 0; - if (_this._partNo === 0 && bitField.bits >= 159 || bitField.bits >= 161) { _this._valid = 'VALID'; return _possibleConstructorReturn(_this); @@ -95,58 +82,14 @@ var Ais24Msg = function (_AisMessage) { _this._errMsg = 'invalid bitcount for type 24 msg:' + bitField.bits; return _this; } - - _createClass(Ais24Msg, [{ - key: '_isTender', - value: function _isTender() { - if (typeof this._tender !== 'boolean') { - this._tender = String(this.mmsi).startsWith('98'); - } - return this._tender; - } - }, { - key: '_getDimToBow', - value: function _getDimToBow() { - if (this.partNo === 1 && !this._isTender()) { - return this._bitField.getInt(132, 9, true); - } else { - return NaN; - } - } - }, { - key: '_getDimToStern', - value: function _getDimToStern() { - if (this.partNo === 1 && !this._isTender()) { - return this._bitField.getInt(141, 9, true); - } else { - return NaN; - } - } - }, { - key: '_getDimToPort', - value: function _getDimToPort() { - if (this.partNo === 1 && !this._isTender()) { - return this._bitField.getInt(150, 6, true); - } else { - return NaN; - } - } - }, { - key: '_getDimToStbrd', - value: function _getDimToStbrd() { - if (this.partNo === 1 && !this._isTender()) { - return this._bitField.getInt(156, 6, true); - } else { - return NaN; - } - } - }, { - key: 'supportedValues', + _inherits(Ais24Msg, _AisMessage); + return _createClass(Ais24Msg, [{ + key: "supportedValues", get: function get() { if (this.partNo === 0) { if (!suppValuesValidA) { SUPPORTED_FIELDS_A.forEach(function (field) { - var unit = _AisMessage3.default.getUnit(field); + var unit = _AisMessage2["default"].getUnit(field); if (unit) { suppValuesA[field] = unit; } else { @@ -160,7 +103,7 @@ var Ais24Msg = function (_AisMessage) { if (this._isTender()) { if (!suppValuesValidBT) { SUPPORTED_FIELDS_B_TENDER.forEach(function (field) { - var unit = _AisMessage3.default.getUnit(field); + var unit = _AisMessage2["default"].getUnit(field); if (unit) { suppValuesBT[field] = unit; } else { @@ -173,7 +116,7 @@ var Ais24Msg = function (_AisMessage) { } else { if (!suppValuesValidBNT) { SUPPORTED_FIELDS_B_NO_TENDER.forEach(function (field) { - var unit = _AisMessage3.default.getUnit(field); + var unit = _AisMessage2["default"].getUnit(field); if (unit) { suppValuesBNT[field] = unit; } else { @@ -187,7 +130,7 @@ var Ais24Msg = function (_AisMessage) { } } }, { - key: 'partNo', + key: "partNo", get: function get() { if (typeof this._partNo === 'number') { return this._partNo; @@ -196,7 +139,7 @@ var Ais24Msg = function (_AisMessage) { } } }, { - key: 'name', + key: "name", get: function get() { if (this.partNo === 0) { return this._formatStr(this._bitField.getString(40, 120)); @@ -205,7 +148,7 @@ var Ais24Msg = function (_AisMessage) { } } }, { - key: 'shipType', + key: "shipType", get: function get() { if (this.partNo === 1) { return this._bitField.getInt(40, 8, true); @@ -214,7 +157,7 @@ var Ais24Msg = function (_AisMessage) { } } }, { - key: 'callSign', + key: "callSign", get: function get() { if (this.partNo === 1) { return this._formatStr(this._bitField.getString(90, 42)); @@ -223,7 +166,7 @@ var Ais24Msg = function (_AisMessage) { } } }, { - key: 'vendorId', + key: "vendorId", get: function get() { if (this.partNo === 1) { return this._formatStr(this._bitField.getString(48, 42)); @@ -232,7 +175,51 @@ var Ais24Msg = function (_AisMessage) { } } }, { - key: 'mothershipMmsi', + key: "_isTender", + value: function _isTender() { + if (typeof this._tender !== 'boolean') { + this._tender = String(this.mmsi).startsWith('98'); + } + return this._tender; + } + }, { + key: "_getDimToBow", + value: function _getDimToBow() { + if (this.partNo === 1 && !this._isTender()) { + return this._bitField.getInt(132, 9, true); + } else { + return NaN; + } + } + }, { + key: "_getDimToStern", + value: function _getDimToStern() { + if (this.partNo === 1 && !this._isTender()) { + return this._bitField.getInt(141, 9, true); + } else { + return NaN; + } + } + }, { + key: "_getDimToPort", + value: function _getDimToPort() { + if (this.partNo === 1 && !this._isTender()) { + return this._bitField.getInt(150, 6, true); + } else { + return NaN; + } + } + }, { + key: "_getDimToStbrd", + value: function _getDimToStbrd() { + if (this.partNo === 1 && !this._isTender()) { + return this._bitField.getInt(156, 6, true); + } else { + return NaN; + } + } + }, { + key: "mothershipMmsi", get: function get() { if (this.partNo === 1 && this._isTender()) { return this._bitField.getInt(132, 30, true); @@ -241,8 +228,4 @@ var Ais24Msg = function (_AisMessage) { } } }]); - - return Ais24Msg; -}(_AisMessage3.default); - -exports.default = Ais24Msg; +}(_AisMessage2["default"]); diff --git a/lib/Ais27Msg.js b/lib/Ais27Msg.js index cc7acbd..ce9e925 100644 --- a/lib/Ais27Msg.js +++ b/lib/Ais27Msg.js @@ -1,28 +1,25 @@ -'use strict'; +"use strict"; +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } Object.defineProperty(exports, "__esModule", { - value: true + value: true }); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _AisBitField = require('./AisBitField'); - -var _AisBitField2 = _interopRequireDefault(_AisBitField); - -var _AisMessage2 = require('./AisMessage'); - -var _AisMessage3 = _interopRequireDefault(_AisMessage2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/* +exports["default"] = void 0; +var _AisBitField = _interopRequireDefault(require("./AisBitField")); +var _AisMessage2 = _interopRequireDefault(require("./AisMessage")); +function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } /* * AisParser: A parser for NMEA0183 AIS messages. * Copyright (C) 2017 Thomas Runte . * @@ -38,11 +35,8 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" * You should have received a copy of the Apache License Version 2.0 * along with this program. If not, see . */ - var MOD_NAME = 'Ais27Msg'; - var SUPPORTED_FIELDS = ['aisType', 'channel', 'repeatInd', 'mmsi', 'midCountry', 'midCountryIso', 'mmsiType', 'class', 'navStatus', 'navStatusStr', 'sogStatus', 'sog', 'cog', 'latitude', 'longitude', 'posAccuracy']; - var suppValuesValid = false; var suppValues = {}; @@ -64,78 +58,70 @@ var suppValues = {}; |============================================================================== */ - -var Ais27Msg = function (_AisMessage) { - _inherits(Ais27Msg, _AisMessage); - - function Ais27Msg(aisType, bitField, channel) { - _classCallCheck(this, Ais27Msg); - - var _this = _possibleConstructorReturn(this, (Ais27Msg.__proto__ || Object.getPrototypeOf(Ais27Msg)).call(this, aisType, bitField, channel)); - - if (bitField.bits >= 94) { - _this._valid = 'VALID'; - } else { - _this._valid = 'INVALID'; - _this._errMsg = 'invalid bitcount for type CNB msg:' + bitField.bits; - } - return _this; +var Ais27Msg = exports["default"] = /*#__PURE__*/function (_AisMessage) { + function Ais27Msg(aisType, bitField, channel) { + var _this; + _classCallCheck(this, Ais27Msg); + _this = _callSuper(this, Ais27Msg, [aisType, bitField, channel]); + if (bitField.bits >= 94) { + _this._valid = 'VALID'; + } else { + _this._valid = 'INVALID'; + _this._errMsg = 'invalid bitcount for type CNB msg:' + bitField.bits; } - - _createClass(Ais27Msg, [{ - key: '_getRawSog', - value: function _getRawSog() { - return this._bitField.getInt(79, 6, true) * 10; - } - }, { - key: '_getRawCog', - value: function _getRawCog() { - return this._bitField.getInt(85, 9, true) * 10; - } - }, { - key: '_getRawLat', - value: function _getRawLat() { - return this._bitField.getInt(62, 17, false) * 1000; - } - }, { - key: '_getRawLon', - value: function _getRawLon() { - return this._bitField.getInt(44, 18, false) * 1000; - } - }, { - key: 'class', - get: function get() { - return 'A'; - } - }, { - key: 'supportedValues', - get: function get() { - if (!suppValuesValid) { - SUPPORTED_FIELDS.forEach(function (field) { - var unit = _AisMessage3.default.getUnit(field); - if (unit) { - suppValues[field] = unit; - } else { - console.warn(MOD_NAME + 'field without unit encountered:' + field); - } - }); - suppValuesValid = true; - } - return suppValues; - } - }, { - key: 'navStatus', - get: function get() { - return this._bitField.getInt(40, 4, true); - } - }, { - key: 'posAccuracy', - get: function get() { - return this._bitField.getInt(38, 1, true) === 1; - } - }]); - - return Ais27Msg; -}(_AisMessage3.default); - -exports.default = Ais27Msg; + return _this; + } + _inherits(Ais27Msg, _AisMessage); + return _createClass(Ais27Msg, [{ + key: "class", + get: function get() { + return 'A'; + } + }, { + key: "supportedValues", + get: function get() { + if (!suppValuesValid) { + SUPPORTED_FIELDS.forEach(function (field) { + var unit = _AisMessage2["default"].getUnit(field); + if (unit) { + suppValues[field] = unit; + } else { + console.warn(MOD_NAME + 'field without unit encountered:' + field); + } + }); + suppValuesValid = true; + } + return suppValues; + } + }, { + key: "navStatus", + get: function get() { + return this._bitField.getInt(40, 4, true); + } + }, { + key: "_getRawSog", + value: function _getRawSog() { + return this._bitField.getInt(79, 6, true) * 10; + } + }, { + key: "_getRawCog", + value: function _getRawCog() { + return this._bitField.getInt(85, 9, true) * 10; + } + }, { + key: "posAccuracy", + get: function get() { + return this._bitField.getInt(38, 1, true) === 1; + } + }, { + key: "_getRawLat", + value: function _getRawLat() { + return this._bitField.getInt(62, 17, false) * 1000; + } + }, { + key: "_getRawLon", + value: function _getRawLon() { + return this._bitField.getInt(44, 18, false) * 1000; + } + }]); +}(_AisMessage2["default"]); diff --git a/lib/AisBitField.js b/lib/AisBitField.js index c97742d..d5087a1 100644 --- a/lib/AisBitField.js +++ b/lib/AisBitField.js @@ -1,13 +1,15 @@ -'use strict'; +"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - +exports["default"] = void 0; +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /* * AisParser: A parser for NMEA0183 AIS messages. * Copyright (C) 2017 Thomas Runte . @@ -24,19 +26,15 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons * You should have received a copy of the Apache License Version 2.0 * along with this program. If not, see . */ - var DEBUG = false; var MOD_NAME = 'AisBitField'; var AIS_CHR_TBL = ['@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^', '_', ' ', '!', '\'', '#', '$', '%', '&', '"', '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?']; - var padStart = function padStart(str, tgtLen) { var padStr = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '0'; - var fillLen = tgtLen - str.length; if (fillLen <= 0) { return str; } - var filler = padStr; var fLen = filler.length; while (fLen < fillLen) { @@ -49,17 +47,13 @@ var padStart = function padStart(str, tgtLen) { } return filler + str; }; - -var printByte = function printByte(byte) { +var printByte = function printByte(_byte) { var bits = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 8; - - return Number(byte & (1 << bits) - 1).toString(2).padStart(bits, '0'); + return Number(_byte & (1 << bits) - 1).toString(2).padStart(bits, '0'); }; - -var AisBitField = function () { +var AisBitField = exports["default"] = /*#__PURE__*/function () { function AisBitField(str, padBits) { _classCallCheck(this, AisBitField); - if (DEBUG) console.log(MOD_NAME + '.constructor(' + str + ',' + padBits + ')'); if (str) { this._aisStr = str; @@ -77,46 +71,47 @@ var AisBitField = function () { this._bits = 0; } } - - _createClass(AisBitField, [{ - key: '_getByte', - + return _createClass(AisBitField, [{ + key: "bits", + get: function get() { + return this._bits; + } // return 6-bit + }, { + key: "_getByte", value: function _getByte(idx) { - var byte = this._bytes[idx]; - if (typeof byte === 'number') { - return byte; + var _byte2 = this._bytes[idx]; + if (typeof _byte2 === 'number') { + return _byte2; } else { - var char = this._aisStr.charCodeAt(idx); - if (char > 47) { - if (char < 88) { - return this._bytes[idx] = char - 48; + var _char = this._aisStr.charCodeAt(idx); + if (_char > 47) { + if (_char < 88) { + return this._bytes[idx] = _char - 48; } else { - if (char < 96) { - throw MOD_NAME + '.parse() invalid character encountered:' + char + ' at index ' + idx; + if (_char < 96) { + throw MOD_NAME + '.parse() invalid character encountered:' + _char + ' at index ' + idx; } else { - if (char < 120) { - return this._bytes[idx] = char - 56; + if (_char < 120) { + return this._bytes[idx] = _char - 56; } else { - throw MOD_NAME + '.parse() invalid character encountered:' + char + ' at index ' + idx; + throw MOD_NAME + '.parse() invalid character encountered:' + _char + ' at index ' + idx; } } } } else { - throw MOD_NAME + '.parse() invalid character encountered:' + char + ' at index ' + idx; + throw MOD_NAME + '.parse() invalid character encountered:' + _char + ' at index ' + idx; } } } }, { - key: 'getInt', + key: "getInt", value: function getInt(start, len, unsigned) { if (DEBUG) console.log(MOD_NAME + '.getInt(' + start + ',' + len + ',' + unsigned.toString() + ')'); - if (len <= 0) { return 0; } - if (len > 31 || start + len > this._bits) { throw MOD_NAME + '.getInt() invalid invalid indexes encountered:' + start + ' ' + len; } @@ -125,23 +120,19 @@ var AisBitField = function () { var bitIdx = start % 6; var byteIdx = Math.floor(start / 6); var retVal = 0; - if (DEBUG) console.log(MOD_NAME + '.getInt() bitIdx:' + bitIdx + ' byteIdx:' + byteIdx); - - var i = void 0; + var i; var bits = 0; if (bitIdx > 0) { var rShift = 6 - bitIdx; retVal = this._getByte(byteIdx++) & 0x3F >> bitIdx; bits = rShift; } - var max = Math.min(len, 25); while (bits < max) { retVal = retVal << 6 | this._getByte(byteIdx++); bits += 6; } - if (bits > len) { retVal >>= bits - len; } else { @@ -150,7 +141,6 @@ var AisBitField = function () { retVal = retVal << rest | this._getByte(byteIdx) >> 6 - rest; } } - if (!unsigned && len < 32) { var compl = 1 << len - 1; if ((retVal & compl) != 0) { @@ -161,16 +151,14 @@ var AisBitField = function () { return retVal; } }, { - key: 'getString', + key: "getString", value: function getString(start, len) { if (len % 6 != 0 || start + len > this._bits || start < 0) { throw MOD_NAME + '.getString() invalid indexes encountered: start:' + start + ' len:' + len + ' bits:' + this._bits; } - if (len === 0) { return ''; } - var bitIdx = start % 6; var byteIdx = Math.floor(start / 6); var result = ''; @@ -187,41 +175,28 @@ var AisBitField = function () { var _endIdx = byteIdx + len / 6 + 1; var chrIdx = (this._getByte(byteIdx++) & loMask) << bitIdx; while (byteIdx < _endIdx) { - var byte = this._getByte(byteIdx++); - result += AIS_CHR_TBL[chrIdx | (byte & hiMask) >> 6 - bitIdx]; - chrIdx = (byte & loMask) << bitIdx; + var _byte3 = this._getByte(byteIdx++); + result += AIS_CHR_TBL[chrIdx | (_byte3 & hiMask) >> 6 - bitIdx]; + chrIdx = (_byte3 & loMask) << bitIdx; } } return result; } }, { - key: 'getBytes', + key: "getBytes", value: function getBytes(start, length) { if (start + length > this._bits || start < 0 || length < 0) { - throw new Error(MOD_NAME + ('.getBytes() invalid indexes: start=' + start + ', length=' + length + ', totalBits=' + this._bits)); + throw new Error(MOD_NAME + ".getBytes() invalid indexes: start=".concat(start, ", length=").concat(length, ", totalBits=").concat(this._bits)); } - var resultLength = Math.ceil(length / 8); var result = new Uint8Array(resultLength); - for (var i = 0; i < resultLength; i++) { var bitStart = start + i * 8; var bitsLeft = length - i * 8; var bitsToRead = bitsLeft >= 8 ? 8 : bitsLeft; - result[i] = this.getInt(bitStart, bitsToRead, true); } - return result; } - }, { - key: 'bits', - get: function get() { - return this._bits; - } }]); - - return AisBitField; }(); - -exports.default = AisBitField; diff --git a/lib/AisCNBMsg.js b/lib/AisCNBMsg.js index 4551d8a..1e96c73 100644 --- a/lib/AisCNBMsg.js +++ b/lib/AisCNBMsg.js @@ -1,28 +1,25 @@ -'use strict'; +"use strict"; +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } Object.defineProperty(exports, "__esModule", { value: true }); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _AisBitField = require('./AisBitField'); - -var _AisBitField2 = _interopRequireDefault(_AisBitField); - -var _AisMessage2 = require('./AisMessage'); - -var _AisMessage3 = _interopRequireDefault(_AisMessage2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/* +exports["default"] = void 0; +var _AisBitField = _interopRequireDefault(require("./AisBitField")); +var _AisMessage2 = _interopRequireDefault(require("./AisMessage")); +function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } +function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } +function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } +function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } +function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } +function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } +function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } /* * AisParser: A parser for NMEA0183 AIS messages. * Copyright (C) 2017 Thomas Runte . * @@ -38,11 +35,8 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" * You should have received a copy of the Apache License Version 2.0 * along with this program. If not, see . */ - var MOD_NAME = 'AisCNBMsg'; - var SUPPORTED_FIELDS = ['aisType', 'channel', 'repeatInd', 'mmsi', 'midCountry', 'midCountryIso', 'mmsiType', 'class', 'navStatus', 'navStatusStr', 'rotStatus', 'rot', 'heading', 'sogStatus', 'sog', 'cog', 'latitude', 'longitude', 'posAccuracy', 'utcTsSec', 'utcTsStatus']; - var suppValuesValid = false; var suppValues = {}; @@ -71,15 +65,11 @@ TODO: |============================================================================== */ - -var AisCNBMsg = function (_AisMessage) { - _inherits(AisCNBMsg, _AisMessage); - +var AisCNBMsg = exports["default"] = /*#__PURE__*/function (_AisMessage) { function AisCNBMsg(aisType, bitField, channel) { + var _this; _classCallCheck(this, AisCNBMsg); - - var _this = _possibleConstructorReturn(this, (AisCNBMsg.__proto__ || Object.getPrototypeOf(AisCNBMsg)).call(this, aisType, bitField, channel)); - + _this = _callSuper(this, AisCNBMsg, [aisType, bitField, channel]); if (bitField.bits >= 144) { _this._valid = 'VALID'; } else { @@ -88,76 +78,72 @@ var AisCNBMsg = function (_AisMessage) { } return _this; } - - _createClass(AisCNBMsg, [{ - key: '_getRawRot', + _inherits(AisCNBMsg, _AisMessage); + return _createClass(AisCNBMsg, [{ + key: "class", + get: function get() { + return 'A'; + } + }, { + key: "supportedValues", + get: function get() { + if (!suppValuesValid) { + SUPPORTED_FIELDS.forEach(function (field) { + var unit = _AisMessage2["default"].getUnit(field); + if (unit) { + suppValues[field] = unit; + } else { + console.warn(MOD_NAME + 'field without unit encountered:' + field); + } + }); + suppValuesValid = true; + } + return suppValues; + } + }, { + key: "navStatus", + get: function get() { + return this._bitField.getInt(38, 4, true); + } + }, { + key: "_getRawRot", value: function _getRawRot() { return this._bitField.getInt(42, 8, false); } }, { - key: '_getRawHeading', + key: "_getRawHeading", value: function _getRawHeading() { return this._bitField.getInt(128, 9, true); } }, { - key: '_getRawSog', + key: "_getRawSog", value: function _getRawSog() { return this._bitField.getInt(50, 10, true); } }, { - key: '_getRawCog', + key: "_getRawCog", value: function _getRawCog() { return this._bitField.getInt(116, 12, true); } }, { - key: '_getUtcSec', + key: "posAccuracy", + get: function get() { + return this._bitField.getInt(60, 1, true) === 1; + } + }, { + key: "_getUtcSec", value: function _getUtcSec() { return this._bitField.getInt(137, 6, true); } }, { - key: '_getRawLat', + key: "_getRawLat", value: function _getRawLat() { return this._bitField.getInt(89, 27, false); } }, { - key: '_getRawLon', + key: "_getRawLon", value: function _getRawLon() { return this._bitField.getInt(61, 28, false); } - }, { - key: 'class', - get: function get() { - return 'A'; - } - }, { - key: 'supportedValues', - get: function get() { - if (!suppValuesValid) { - SUPPORTED_FIELDS.forEach(function (field) { - var unit = _AisMessage3.default.getUnit(field); - if (unit) { - suppValues[field] = unit; - } else { - console.warn(MOD_NAME + 'field without unit encountered:' + field); - } - }); - suppValuesValid = true; - } - return suppValues; - } - }, { - key: 'navStatus', - get: function get() { - return this._bitField.getInt(38, 4, true); - } - }, { - key: 'posAccuracy', - get: function get() { - return this._bitField.getInt(60, 1, true) === 1; - } }]); - - return AisCNBMsg; -}(_AisMessage3.default); - -exports.default = AisCNBMsg; +}(_AisMessage2["default"]); diff --git a/lib/AisMessage.js b/lib/AisMessage.js index 9ba8649..6ee282d 100644 --- a/lib/AisMessage.js +++ b/lib/AisMessage.js @@ -1,12 +1,17 @@ -'use strict'; +"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -/* +exports["default"] = void 0; +var _AisBitField = _interopRequireDefault(require("./AisBitField")); +function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /* * AisParser: A parser for NMEA0183 AIS messages. * Copyright (C) 2017 Thomas Runte . * Copyright (C) 2026 Davide Gssa . @@ -23,21 +28,10 @@ var _createClass = function () { function defineProperties(target, props) { for * You should have received a copy of the Apache License Version 2.0 * along with this program. If not, see . */ - -var _AisBitField = require('./AisBitField'); - -var _AisBitField2 = _interopRequireDefault(_AisBitField); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - var MOD_NAME = 'AisMessage'; var INVALID_LON = 0x6791AC0; var INVALID_LAT = 0x3412140; - var SUPPORTED_FIELDS = ['valid', 'errMsg', 'aisType']; - var NAV_STATUS = { '0': 'Under way using engine', '1': 'At anchor', @@ -56,7 +50,6 @@ var NAV_STATUS = { '14': 'Reserved for future use', '15': 'Not defined (default)' }; - var SHIP_TYPE = { '0': 'Not available', '1': 'Reserved for future use', @@ -159,7 +152,6 @@ var SHIP_TYPE = { '98': 'Other Type, Reserved for future use', '99': 'Other Type, no additional information' }; - var MID_TO_COUNTRY = { "201": ["Albania (Republic of)", "AL"], "202": ["Andorra (Principality of)", "AD"], @@ -451,7 +443,6 @@ var MID_TO_COUNTRY = { "770": ["Uruguay (Eastern Republic of)", "UY"], "775": ["Venezuela (Bolivarian Republic of)", "VE"] }; - var AID_TO_NAV = { '0': 'Default, Type of Aid to Navigation not specified', '1': 'Reference point', @@ -486,7 +477,6 @@ var AID_TO_NAV = { '30': 'Special Mark', '31': 'Light Vessel / LANBY / Rigs' }; - var EPFD = { '0': 'Undefined', '1': 'GPS', @@ -498,7 +488,6 @@ var EPFD = { '7': 'Surveyed', '8': 'Galileo' }; - var UNITS = { 'aisType': 'number', 'channel': 'string', @@ -612,147 +601,24 @@ var UNITS = { 'assignedMode': 'boolean', 'raim': 'boolean' }; - var suppValuesValid = false; var suppValues = {}; - -var AisMessage = function () { - _createClass(AisMessage, [{ - key: 'getUnit', - value: function getUnit(field) { - return UNITS[field]; - } - }], [{ - key: 'fromError', - value: function fromError(valid, errMsg) { - var aisType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; - var channel = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ''; - - var msg = new AisMessage(aisType, new _AisBitField2.default('', 0), channel); - msg.setResult(valid, errMsg); - return msg; - } - }, { - key: 'getUnit', - value: function getUnit(field) { - return UNITS[field]; - } - }]); - +var AisMessage = exports["default"] = /*#__PURE__*/function () { function AisMessage(aisType, bitField, channel) { _classCallCheck(this, AisMessage); - this._aisType = aisType; this._bitField = bitField; this._channel = channel; this._valid = 'INVALID'; this._errMsg = ''; } - - _createClass(AisMessage, [{ - key: 'setResult', - value: function setResult(valid, errMsg) { - this._valid = valid; - this._errMsg = errMsg; - } - }, { - key: '_formatStr', - value: function _formatStr(str) { - var end = str.indexOf('@'); - if (end > -1) { - return str.substr(0, end); - } else { - return str; - } - } - }, { - key: 'getMidCountry', - value: function getMidCountry() { - var short = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - var midStr = String(this.mmsi); - var country = void 0; - if (this.mmsi > 200000000 && this.mmsi < 800000000) { - country = MID_TO_COUNTRY[midStr.substr(0, 3)]; - } else { - switch (midStr.substr(0, 2)) { - case '98': - case '99': - country = MID_TO_COUNTRY[midStr.substr(2, 3)]; - } - } - if (country) { - return short ? country[1] : country[0]; - } else { - return ''; - } - } - }, { - key: '_getMmsi', - value: function _getMmsi() { - if (this._bitField && this._bitField.bits >= 38) { - return this._bitField.getInt(8, 30, true); - } else { - return NaN; - } - } - }, { - key: '_getRawRot', - value: function _getRawRot() { - return 128; - } - }, { - key: '_getRawHeading', - value: function _getRawHeading() { - return 511; - } - }, { - key: '_getRawSog', - value: function _getRawSog() { - return 1023; - } - }, { - key: '_getRawCog', - value: function _getRawCog() { - return 3600; - } - }, { - key: '_getRawLat', - value: function _getRawLat() { - return INVALID_LAT; - } - }, { - key: '_getRawLon', - value: function _getRawLon() { - return INVALID_LON; - } - }, { - key: '_getUtcSec', - value: function _getUtcSec() { - return 60; - } - }, { - key: '_getDimToBow', - value: function _getDimToBow() { - return NaN; - } - }, { - key: '_getDimToStern', - value: function _getDimToStern() { - return NaN; - } - }, { - key: '_getDimToPort', - value: function _getDimToPort() { - return NaN; - } - }, { - key: '_getDimToStbrd', - value: function _getDimToStbrd() { - return NaN; + return _createClass(AisMessage, [{ + key: "getUnit", + value: function getUnit(field) { + return UNITS[field]; } }, { - key: 'supportedValues', + key: "supportedValues", get: function get() { if (!suppValuesValid) { SUPPORTED_FIELDS.forEach(function (field) { @@ -768,48 +634,84 @@ var AisMessage = function () { return suppValues; } }, { - key: 'valid', + key: "setResult", + value: function setResult(valid, errMsg) { + this._valid = valid; + this._errMsg = errMsg; + } + }, { + key: "_formatStr", + value: function _formatStr(str) { + var end = str.indexOf('@'); + if (end > -1) { + return str.substr(0, end); + } else { + return str; + } + } + }, { + key: "valid", get: function get() { return this._valid; } }, { - key: 'errMsg', + key: "errMsg", get: function get() { return this._errMsg; } }, { - key: 'aisType', + key: "aisType", get: function get() { return this._aisType; } }, { - key: 'channel', + key: "channel", get: function get() { return this._channel; } }, { - key: 'class', + key: "class", get: function get() { return ''; } }, { - key: 'midCountry', + key: "getMidCountry", + value: function getMidCountry() { + var _short = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var midStr = String(this.mmsi); + var country; + if (this.mmsi > 200000000 && this.mmsi < 800000000) { + country = MID_TO_COUNTRY[midStr.substr(0, 3)]; + } else { + switch (midStr.substr(0, 2)) { + case '98': + case '99': + country = MID_TO_COUNTRY[midStr.substr(2, 3)]; + } + } + if (country) { + return _short ? country[1] : country[0]; + } else { + return ''; + } + } + }, { + key: "midCountry", get: function get() { return this.getMidCountry(false); } }, { - key: 'midCountryIso', + key: "midCountryIso", get: function get() { return this.getMidCountry(true); } }, { - key: 'mmsiType', + key: "mmsiType", get: function get() { var midStr = String(this.mmsi); if (midStr.length > 9 || midStr.length < 6) { return ''; } - var firstDigit = 0; if (midStr.length === 9) { firstDigit = midStr.substr(0, 1); @@ -853,7 +755,7 @@ var AisMessage = function () { } } }, { - key: 'repeatInd', + key: "repeatInd", get: function get() { if (this._bitField && this._bitField.bits >= 8) { return this._bitField.getInt(6, 2, true); @@ -862,7 +764,16 @@ var AisMessage = function () { } } }, { - key: 'mmsi', + key: "_getMmsi", + value: function _getMmsi() { + if (this._bitField && this._bitField.bits >= 38) { + return this._bitField.getInt(8, 30, true); + } else { + return NaN; + } + } + }, { + key: "mmsi", get: function get() { if (typeof this._mmsi !== 'number') { this._mmsi = this._getMmsi(); @@ -870,27 +781,32 @@ var AisMessage = function () { return this._mmsi; } }, { - key: 'aisVer', + key: "aisVer", get: function get() { return NaN; } }, { - key: 'imo', + key: "imo", get: function get() { return NaN; } }, { - key: 'navStatus', + key: "navStatus", get: function get() { return NaN; } }, { - key: 'navStatusStr', + key: "navStatusStr", get: function get() { return NAV_STATUS[String(this.navStatus)] || ''; } }, { - key: 'rotStatus', + key: "_getRawRot", + value: function _getRawRot() { + return 128; + } + }, { + key: "rotStatus", get: function get() { if (typeof this._rot !== 'number') { this._rot = this._getRawRot(); @@ -899,15 +815,13 @@ var AisMessage = function () { if (rot === 128) { return 'NA'; } - if (rot === 0) { return 'NONE'; } - return rot > 0 ? 'RIGHT' : 'LEFT'; } }, { - key: 'rot', + key: "rot", get: function get() { if (typeof this._rot !== 'number') { this._rot = this._getRawRot(); @@ -920,7 +834,12 @@ var AisMessage = function () { } } }, { - key: 'heading', + key: "_getRawHeading", + value: function _getRawHeading() { + return 511; + } + }, { + key: "heading", get: function get() { if (typeof this._hdg !== 'number') { this._hdg = this._getRawHeading(); @@ -928,7 +847,12 @@ var AisMessage = function () { return this._hdg === 511 ? NaN : this._hdg; } }, { - key: 'sogStatus', + key: "_getRawSog", + value: function _getRawSog() { + return 1023; + } + }, { + key: "sogStatus", get: function get() { if (typeof this._sog !== 'number') { this._sog = this._getRawSog(); @@ -940,7 +864,7 @@ var AisMessage = function () { return 'INVALID'; } }, { - key: 'sog', + key: "sog", get: function get() { if (typeof this._sog !== 'number') { this._sog = this._getRawSog(); @@ -953,16 +877,25 @@ var AisMessage = function () { } } }, { - key: 'cog', + key: "_getRawCog", + value: function _getRawCog() { + return 3600; + } + }, { + key: "cog", get: function get() { if (typeof this._cog !== 'number') { this._cog = this._getRawCog(); } - return this._cog !== 3600 ? this._cog / 10 : NaN; } }, { - key: 'latitude', + key: "_getRawLat", + value: function _getRawLat() { + return INVALID_LAT; + } + }, { + key: "latitude", get: function get() { if (typeof this._lat !== 'number') { this._lat = this._getRawLat(); @@ -971,7 +904,12 @@ var AisMessage = function () { return lat === INVALID_LAT ? NaN : lat / 600000; } }, { - key: 'longitude', + key: "_getRawLon", + value: function _getRawLon() { + return INVALID_LON; + } + }, { + key: "longitude", get: function get() { if (typeof this._lon !== 'number') { this._lon = this._getRawLon(); @@ -980,22 +918,27 @@ var AisMessage = function () { return lon === INVALID_LON ? NaN : lon / 600000; } }, { - key: 'posAccuracy', + key: "posAccuracy", get: function get() { return false; } }, { - key: 'callSign', + key: "callSign", get: function get() { return ''; } }, { - key: 'name', + key: "name", get: function get() { return ''; } }, { - key: 'utcTsSec', + key: "_getUtcSec", + value: function _getUtcSec() { + return 60; + } + }, { + key: "utcTsSec", get: function get() { if (!(typeof this._utcSec === 'number')) { this._utcSec = this._getUtcSec(); @@ -1003,7 +946,7 @@ var AisMessage = function () { return this._utcSec < 60 ? this._utcSec : NaN; } }, { - key: 'utcTsStatus', + key: "utcTsStatus", get: function get() { if (!(typeof this._utcSec === 'number')) { this._utcSec = this._getUtcSec(); @@ -1032,17 +975,22 @@ var AisMessage = function () { } } }, { - key: 'shipType', + key: "shipType", get: function get() { return 0; } }, { - key: 'shipTypeStr', + key: "shipTypeStr", get: function get() { return SHIP_TYPE[this.shipType] || ''; } }, { - key: 'dimToBowStatus', + key: "_getDimToBow", + value: function _getDimToBow() { + return NaN; + } + }, { + key: "dimToBowStatus", get: function get() { if (!this._dimToBow) { this._dimToBow = this._getDimToBow() || NaN; @@ -1057,7 +1005,7 @@ var AisMessage = function () { } } }, { - key: 'dimToBow', + key: "dimToBow", get: function get() { if (!this._dimToBow) { this._dimToBow = this._getDimToBow() || NaN; @@ -1069,7 +1017,12 @@ var AisMessage = function () { } } }, { - key: 'dimToSternStatus', + key: "_getDimToStern", + value: function _getDimToStern() { + return NaN; + } + }, { + key: "dimToSternStatus", get: function get() { if (!this._dimToStern) { this._dimToStern = this._getDimToStern() || NaN; @@ -1084,7 +1037,7 @@ var AisMessage = function () { } } }, { - key: 'dimToStern', + key: "dimToStern", get: function get() { if (!this._dimToStern) { this._dimToStern = this._getDimToStern() || NaN; @@ -1096,7 +1049,12 @@ var AisMessage = function () { } } }, { - key: 'dimToPortStatus', + key: "_getDimToPort", + value: function _getDimToPort() { + return NaN; + } + }, { + key: "dimToPortStatus", get: function get() { if (!this._dimToPort) { this._dimToPort = this._getDimToPort() || NaN; @@ -1111,7 +1069,7 @@ var AisMessage = function () { } } }, { - key: 'dimToPort', + key: "dimToPort", get: function get() { if (!this._dimToPort) { this._dimToPort = this._getDimToPort() || NaN; @@ -1123,7 +1081,12 @@ var AisMessage = function () { } } }, { - key: 'dimToStbrdStatus', + key: "_getDimToStbrd", + value: function _getDimToStbrd() { + return NaN; + } + }, { + key: "dimToStbrdStatus", get: function get() { if (!this._dimToStbrd) { this._dimToStbrd = this._getDimToStbrd() || NaN; @@ -1138,7 +1101,7 @@ var AisMessage = function () { } } }, { - key: 'dimToStbrd', + key: "dimToStbrd", get: function get() { if (!this._dimToStbrd) { this._dimToStbrd = this._getDimToStbrd() || NaN; @@ -1150,111 +1113,120 @@ var AisMessage = function () { } } }, { - key: 'epfd', + key: "epfd", get: function get() { return 0; } }, { - key: 'epfdStr', + key: "epfdStr", get: function get() { return EPFD[this.epfd.toString()] || ''; } }, { - key: 'etaMonth', + key: "etaMonth", get: function get() { return NaN; } }, { - key: 'etaDay', + key: "etaDay", get: function get() { return NaN; } }, { - key: 'etaHour', + key: "etaHour", get: function get() { return NaN; } }, { - key: 'etaMinute', + key: "etaMinute", get: function get() { return NaN; } }, { - key: 'draught', + key: "draught", get: function get() { return NaN; } }, { - key: 'destination', + key: "destination", get: function get() { return ''; } }, { - key: 'partNo', + key: "partNo", get: function get() { return NaN; } }, { - key: 'vendorId', + key: "vendorId", get: function get() { return ''; } // Type 4 Message - }, { - key: 'utcYear', + key: "utcYear", get: function get() { return NaN; } }, { - key: 'utcMonth', + key: "utcMonth", get: function get() { return NaN; } }, { - key: 'utcDay', + key: "utcDay", get: function get() { return NaN; } }, { - key: 'utcHour', + key: "utcHour", get: function get() { return NaN; } }, { - key: 'utcMinute', + key: "utcMinute", get: function get() { return NaN; } }, { - key: 'utcSecond', + key: "utcSecond", get: function get() { return NaN; } }, { - key: 'aidType', + key: "aidType", get: function get() { return NaN; } }, { - key: 'aidTypeStr', + key: "aidTypeStr", get: function get() { return AID_TO_NAV[this.aidType.toString()] || ''; } }, { - key: 'nameExt', + key: "nameExt", get: function get() { return ''; } }, { - key: 'offPosInd', + key: "offPosInd", get: function get() { return 'NA'; } + }], [{ + key: "fromError", + value: function fromError(valid, errMsg) { + var aisType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; + var channel = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ''; + var msg = new AisMessage(aisType, new _AisBitField["default"]('', 0), channel); + msg.setResult(valid, errMsg); + return msg; + } + }, { + key: "getUnit", + value: function getUnit(field) { + return UNITS[field]; + } }]); - - return AisMessage; }(); - -exports.default = AisMessage; diff --git a/lib/AisParser.js b/lib/AisParser.js index a4492e4..f9e00b6 100644 --- a/lib/AisParser.js +++ b/lib/AisParser.js @@ -1,8 +1,32 @@ -'use strict'; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -/* +"use strict"; + +var _AisBitField = _interopRequireDefault(require("./AisBitField")); +var _AisMessage = _interopRequireDefault(require("./AisMessage")); +var _AisCNBMsg = _interopRequireDefault(require("./AisCNBMsg")); +var _Ais04Msg = _interopRequireDefault(require("./Ais04Msg")); +var _Ais05Msg = _interopRequireDefault(require("./Ais05Msg")); +var _Ais09Msg = _interopRequireDefault(require("./Ais09Msg")); +var _Ais08Msg = _interopRequireDefault(require("./Ais08Msg")); +var _Ais08MsgDac367Fid = _interopRequireDefault(require("./Ais08MsgDac367Fid23")); +var _Ais08MsgDac367Fid2 = _interopRequireDefault(require("./Ais08MsgDac367Fid24")); +var _Ais08MsgDac200Fid = _interopRequireDefault(require("./Ais08MsgDac200Fid10")); +var _Ais08MsgDac1Fid = _interopRequireDefault(require("./Ais08MsgDac1Fid21")); +var _Ais08MsgDac1Fid2 = _interopRequireDefault(require("./Ais08MsgDac1Fid29")); +var _Ais08MsgDac1Fid3 = _interopRequireDefault(require("./Ais08MsgDac1Fid30")); +var _Ais08MsgDac1Fid4 = _interopRequireDefault(require("./Ais08MsgDac1Fid31")); +var _Ais14Msg = _interopRequireDefault(require("./Ais14Msg")); +var _Ais18Msg = _interopRequireDefault(require("./Ais18Msg")); +var _Ais19Msg = _interopRequireDefault(require("./Ais19Msg")); +var _Ais21Msg = _interopRequireDefault(require("./Ais21Msg")); +var _Ais24Msg = _interopRequireDefault(require("./Ais24Msg")); +var _Ais27Msg = _interopRequireDefault(require("./Ais27Msg")); +function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } +function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } +function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /* * AisParser: A parser for NMEA0183 AIS messages. * Copyright (C) 2017-2024 Thomas Runte . * Copyright (C) 2025-2026 Davide Gessa . @@ -19,91 +43,6 @@ var _createClass = function () { function defineProperties(target, props) { for * You should have received a copy of the Apache License Version 2.0 * along with this program. If not, see . */ - -var _AisBitField = require('./AisBitField'); - -var _AisBitField2 = _interopRequireDefault(_AisBitField); - -var _AisMessage = require('./AisMessage'); - -var _AisMessage2 = _interopRequireDefault(_AisMessage); - -var _AisCNBMsg = require('./AisCNBMsg'); - -var _AisCNBMsg2 = _interopRequireDefault(_AisCNBMsg); - -var _Ais04Msg = require('./Ais04Msg'); - -var _Ais04Msg2 = _interopRequireDefault(_Ais04Msg); - -var _Ais05Msg = require('./Ais05Msg'); - -var _Ais05Msg2 = _interopRequireDefault(_Ais05Msg); - -var _Ais09Msg = require('./Ais09Msg'); - -var _Ais09Msg2 = _interopRequireDefault(_Ais09Msg); - -var _Ais08Msg = require('./Ais08Msg'); - -var _Ais08Msg2 = _interopRequireDefault(_Ais08Msg); - -var _Ais08MsgDac367Fid = require('./Ais08MsgDac367Fid23'); - -var _Ais08MsgDac367Fid2 = _interopRequireDefault(_Ais08MsgDac367Fid); - -var _Ais08MsgDac367Fid3 = require('./Ais08MsgDac367Fid24'); - -var _Ais08MsgDac367Fid4 = _interopRequireDefault(_Ais08MsgDac367Fid3); - -var _Ais08MsgDac200Fid = require('./Ais08MsgDac200Fid10'); - -var _Ais08MsgDac200Fid2 = _interopRequireDefault(_Ais08MsgDac200Fid); - -var _Ais08MsgDac1Fid = require('./Ais08MsgDac1Fid21'); - -var _Ais08MsgDac1Fid2 = _interopRequireDefault(_Ais08MsgDac1Fid); - -var _Ais08MsgDac1Fid3 = require('./Ais08MsgDac1Fid29'); - -var _Ais08MsgDac1Fid4 = _interopRequireDefault(_Ais08MsgDac1Fid3); - -var _Ais08MsgDac1Fid5 = require('./Ais08MsgDac1Fid30'); - -var _Ais08MsgDac1Fid6 = _interopRequireDefault(_Ais08MsgDac1Fid5); - -var _Ais08MsgDac1Fid7 = require('./Ais08MsgDac1Fid31'); - -var _Ais08MsgDac1Fid8 = _interopRequireDefault(_Ais08MsgDac1Fid7); - -var _Ais14Msg = require('./Ais14Msg'); - -var _Ais14Msg2 = _interopRequireDefault(_Ais14Msg); - -var _Ais18Msg = require('./Ais18Msg'); - -var _Ais18Msg2 = _interopRequireDefault(_Ais18Msg); - -var _Ais19Msg = require('./Ais19Msg'); - -var _Ais19Msg2 = _interopRequireDefault(_Ais19Msg); - -var _Ais21Msg = require('./Ais21Msg'); - -var _Ais21Msg2 = _interopRequireDefault(_Ais21Msg); - -var _Ais24Msg = require('./Ais24Msg'); - -var _Ais24Msg2 = _interopRequireDefault(_Ais24Msg); - -var _Ais27Msg = require('./Ais27Msg'); - -var _Ais27Msg2 = _interopRequireDefault(_Ais27Msg); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - // TODO: Parser currently rejects multipart messages, if the padbit is != 0 in // any but the last part. In an AisHub scan 2 messages where encountered // that where built like that but they were invalid in other ways too, @@ -112,173 +51,162 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons var MOD_NAME = 'AisParser'; var DEBUG = false; var VALID_STARTS = ['!AIVDO', '!AIVDM', '!ANVDM', '!ABVDM', '!ANVDO', '!BSVDM', '!B2VDM', '!B1VDM', '!BSVDO']; - -var AisParser = function () { +var AisParser = /*#__PURE__*/function () { function AisParser() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - _classCallCheck(this, AisParser); - this._options = options; this._context = {}; } - - _createClass(AisParser, [{ - key: 'parse', + return _createClass(AisParser, [{ + key: "parse", value: function parse(sentence) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var checksum = typeof options.checksum !== 'undefined' ? options.checksum : this._options.checksum; if (checksum && !AisParser.checksumValid(sentence)) { - return _AisMessage2.default.fromError('INVALID', 'Invalid checksum in message: [' + sentence + ']'); + return _AisMessage["default"].fromError('INVALID', 'Invalid checksum in message: [' + sentence + ']'); } return this.parseArray(sentence.split(',')); } // !AIVDM,1,1,,B,14`c;d002grD>PH50hr7RVE000SG,0*74 - }, { - key: 'parseArray', + key: "parseArray", value: function parseArray(part) { var parts = part.length; - if (parts !== 7) { - return _AisMessage2.default.fromError('INVALID', 'Invalid count (!=7) of comma separated elements in message: [' + String(part) + ']'); + return _AisMessage["default"].fromError('INVALID', 'Invalid count (!=7) of comma separated elements in message: [' + String(part) + ']'); } else { if (!VALID_STARTS.includes(part[0])) { - return _AisMessage2.default.fromError('UNSUPPORTED', 'not a supported AIS message:[' + String(part) + ']'); + return _AisMessage["default"].fromError('UNSUPPORTED', 'not a supported AIS message:[' + String(part) + ']'); } } - var msgCount = Number(part[1]); var msgIdx = Number(part[2]); var msgId = part[3]; var padBit = Number(part[6].substr(0, 1)); var aisStr = part[5]; - if (msgCount > 1) { if (msgIdx === msgCount) { var msgParts = this._context[msgId]; if (!msgParts) { - return _AisMessage2.default.fromError('INVALID', 'missing prior message(s) in partial message:[' + String(part) + ']'); + return _AisMessage["default"].fromError('INVALID', 'missing prior message(s) in partial message:[' + String(part) + ']'); } if (msgIdx !== msgParts.idx + 1) { delete this._context[msgId]; - return _AisMessage2.default.fromError('INVALID', 'sequence violation (skipped or missing message) in partial message:[' + String(part) + ']'); + return _AisMessage["default"].fromError('INVALID', 'sequence violation (skipped or missing message) in partial message:[' + String(part) + ']'); } aisStr = msgParts.aisStr + aisStr; delete this._context[msgId]; } else { if (padBit !== 0) { - return _AisMessage2.default.fromError('UNSUPPORTED', 'padbit!=0 not supported in partial message:[' + String(part) + ']'); + return _AisMessage["default"].fromError('UNSUPPORTED', 'padbit!=0 not supported in partial message:[' + String(part) + ']'); } var _msgParts = this._context[msgId]; if (msgIdx === 1) { if (typeof _msgParts !== 'undefined') { delete this._context[msgId]; - return _AisMessage2.default.fromError('INVALID', 'a message with this sequence and index already exists in partial message:[' + String(part) + ']'); + return _AisMessage["default"].fromError('INVALID', 'a message with this sequence and index already exists in partial message:[' + String(part) + ']'); } - this._context[msgId] = { idx: msgIdx, aisStr: aisStr }; - return _AisMessage2.default.fromError('INCOMPLETE', ''); + this._context[msgId] = { + idx: msgIdx, + aisStr: aisStr + }; + return _AisMessage["default"].fromError('INCOMPLETE', ''); } else { if (!_msgParts) { - return _AisMessage2.default.fromError('INVALID', 'missing prior message in partial message:[' + String(part) + ']'); + return _AisMessage["default"].fromError('INVALID', 'missing prior message in partial message:[' + String(part) + ']'); } if (msgIdx !== _msgParts.idx + 1) { delete this._context[msgId]; - return _AisMessage2.default.fromError('INVALID', 'sequence violation (skipped or missing message) in partial message:[' + String(part) + ']'); + return _AisMessage["default"].fromError('INVALID', 'sequence violation (skipped or missing message) in partial message:[' + String(part) + ']'); } _msgParts.idx = msgIdx; _msgParts.aisStr += aisStr; - return _AisMessage2.default.fromError('INCOMPLETE', ''); + return _AisMessage["default"].fromError('INCOMPLETE', ''); } } } else { if (msgIdx !== 1) { - return _AisMessage2.default.fromError('INVALID', 'invalid message index !=1 in non partial message:[' + String(part) + ']'); + return _AisMessage["default"].fromError('INVALID', 'invalid message index !=1 in non partial message:[' + String(part) + ']'); } } - try { - var bitField = new _AisBitField2.default(aisStr, padBit); + var bitField = new _AisBitField["default"](aisStr, padBit); var aisType = bitField.getInt(0, 6, true); switch (aisType) { case 1: case 2: case 3: - return new _AisCNBMsg2.default(aisType, bitField, part[4]); + return new _AisCNBMsg["default"](aisType, bitField, part[4]); case 4: - return new _Ais04Msg2.default(aisType, bitField, part[4]); + return new _Ais04Msg["default"](aisType, bitField, part[4]); case 5: - return new _Ais05Msg2.default(aisType, bitField, part[4]); + return new _Ais05Msg["default"](aisType, bitField, part[4]); case 9: - return new _Ais09Msg2.default(aisType, bitField, part[4]); + return new _Ais09Msg["default"](aisType, bitField, part[4]); case 8: - var sentence = new _Ais08Msg2.default(aisType, bitField, part[4]); + var sentence = new _Ais08Msg["default"](aisType, bitField, part[4]); // This Msg has dac and fid in another position - var d1f30 = new _Ais08MsgDac1Fid6.default(aisType, bitField, part[4]); + var d1f30 = new _Ais08MsgDac1Fid3["default"](aisType, bitField, part[4]); if (d1f30._valid === 'VALID' && d1f30.dac == 1 && d1f30.fid == 30) { return d1f30; } - if (sentence.dac == 200 && sentence.fid == 10) { - return new _Ais08MsgDac200Fid2.default(aisType, bitField, part[4]); + return new _Ais08MsgDac200Fid["default"](aisType, bitField, part[4]); } else if (sentence.dac == 367 && sentence.fid == 23) { - return new _Ais08MsgDac367Fid2.default(aisType, bitField, part[4]); + return new _Ais08MsgDac367Fid["default"](aisType, bitField, part[4]); } else if (sentence.dac == 367 && sentence.fid == 24) { - return new _Ais08MsgDac367Fid4.default(aisType, bitField, part[4]); + return new _Ais08MsgDac367Fid2["default"](aisType, bitField, part[4]); } else if (sentence.dac == 1 && sentence.fid == 21) { - return new _Ais08MsgDac1Fid2.default(aisType, bitField, part[4]); + return new _Ais08MsgDac1Fid["default"](aisType, bitField, part[4]); } else if (sentence.dac == 1 && sentence.fid == 29) { - return new _Ais08MsgDac1Fid4.default(aisType, bitField, part[4]); + return new _Ais08MsgDac1Fid2["default"](aisType, bitField, part[4]); } else if (sentence.dac == 1 && sentence.fid == 31) { - return new _Ais08MsgDac1Fid8.default(aisType, bitField, part[4]); + return new _Ais08MsgDac1Fid4["default"](aisType, bitField, part[4]); } else { return sentence; } case 14: - return new _Ais14Msg2.default(aisType, bitField, part[4]); + return new _Ais14Msg["default"](aisType, bitField, part[4]); case 18: - return new _Ais18Msg2.default(aisType, bitField, part[4]); + return new _Ais18Msg["default"](aisType, bitField, part[4]); case 19: - return new _Ais19Msg2.default(aisType, bitField, part[4]); + return new _Ais19Msg["default"](aisType, bitField, part[4]); case 21: - return new _Ais21Msg2.default(aisType, bitField, part[4]); + return new _Ais21Msg["default"](aisType, bitField, part[4]); case 24: - return new _Ais24Msg2.default(aisType, bitField, part[4]); + return new _Ais24Msg["default"](aisType, bitField, part[4]); case 27: - return new _Ais27Msg2.default(aisType, bitField, part[4]); + return new _Ais27Msg["default"](aisType, bitField, part[4]); default: - return _AisMessage2.default.fromError('UNSUPPORTED', 'Unsupported ais type ' + aisType + ' in message [' + String(part) + ']', aisType, part[4]); + return _AisMessage["default"].fromError('UNSUPPORTED', 'Unsupported ais type ' + aisType + ' in message [' + String(part) + ']', aisType, part[4]); } } catch (error) { - return _AisMessage2.default.fromError('INVALID', 'Failed to parse message, error:' + error); + return _AisMessage["default"].fromError('INVALID', 'Failed to parse message, error:' + error); } } }], [{ - key: 'checksumValid', + key: "checksumValid", value: function checksumValid(sentence) { if (!VALID_STARTS.some(function (prefix) { return sentence.startsWith(prefix); })) { return false; } - var idx = sentence.indexOf('*'); if (idx === -1 || idx < 2) { return false; } - var len = idx - 1; var chkSum = 0; - var i = void 0; + var i; if (DEBUG) console.log(MOD_NAME + '.checksumValid(' + sentence + ') on ' + sentence.substr(1, len)); for (i = 1; i < idx; i++) { // if(DEBUG) console.log(MOD_NAME + '.checksumValid() index:' + i + ' value:' + strBuf.readUInt8(i)); chkSum ^= sentence.charCodeAt(i) & 0xFF; } - var chkSumStr = chkSum.toString(16).toUpperCase(); if (chkSumStr.length < 2) { chkSumStr = '0' + chkSumStr; @@ -289,8 +217,5 @@ var AisParser = function () { return chkSumStr === sentence.substr(idx + 1); } }]); - - return AisParser; }(); - module.exports = AisParser; From 67a1a514dcff9326b316dea8fd0d544d85eb68b7 Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Thu, 22 Jan 2026 14:39:43 +0100 Subject: [PATCH 31/33] update package.json, bump version --- package-lock.json | 7439 ++++++++++++++++++--------------------------- package.json | 11 +- 2 files changed, 2922 insertions(+), 4528 deletions(-) diff --git a/package-lock.json b/package-lock.json index ed5c882..e197778 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "aisparser", - "version": "0.0.13", + "version": "0.1.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "aisparser", - "version": "0.0.13", + "version": "0.1.2", "license": "Apache-2.0", "devDependencies": { "@babel/cli": "^7.26.4", @@ -51,937 +51,904 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/cli/node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "node_modules/@babel/code-frame": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz", + "integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==", "dev": true, - "license": "ISC", - "optional": true, + "license": "MIT", "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, "engines": { - "node": ">= 8" + "node": ">=6.9.0" } }, - "node_modules/@babel/cli/node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "node_modules/@babel/compat-data": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.6.tgz", + "integrity": "sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==", "dev": true, "license": "MIT", - "optional": true, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6.9.0" } }, - "node_modules/@babel/cli/node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "node_modules/@babel/core": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.6.tgz", + "integrity": "sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "fill-range": "^7.1.1" + "@babel/code-frame": "^7.28.6", + "@babel/generator": "^7.28.6", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/cli/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "node_modules/@babel/generator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.6.tgz", + "integrity": "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" }, "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": ">=6.9.0" } }, - "node_modules/@babel/cli/node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, "engines": { - "node": ">= 6" + "node": ">=6.9.0" } }, - "node_modules/@babel/cli/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/cli/node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "to-regex-range": "^5.0.1" + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/@babel/cli/node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", + "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", "dev": true, - "hasInstallScript": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.6", + "semver": "^6.3.1" + }, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/cli/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", "dev": true, - "license": "ISC", - "optional": true, + "license": "MIT", "dependencies": { - "is-glob": "^4.0.1" + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", + "semver": "^6.3.1" }, "engines": { - "node": ">= 6" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/cli/node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", + "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "binary-extensions": "^2.0.0" + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "debug": "^4.4.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.10" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/cli/node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", "dev": true, "license": "MIT", - "optional": true, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" } }, - "node_modules/@babel/cli/node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "is-extglob": "^2.1.1" + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" } }, - "node_modules/@babel/cli/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", "dev": true, "license": "MIT", "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { - "node": ">=6" + "node": ">=6.9.0" } }, - "node_modules/@babel/cli/node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", "dev": true, "license": "MIT", - "optional": true, + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/cli/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", "dev": true, "license": "MIT", - "optional": true, - "engines": { - "node": ">=8.6" + "dependencies": { + "@babel/types": "^7.27.1" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/cli/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "picomatch": "^2.2.1" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { - "node": ">=8.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/cli/node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "node_modules/@babel/helper-replace-supers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", + "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.28.6" + }, "engines": { - "node": ">=6" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/code-frame": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz", - "integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==", + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.28.5", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } }, - "node_modules/@babel/compat-data": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.6.tgz", - "integrity": "sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==", + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/core": { + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.6.tgz", - "integrity": "sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz", + "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.28.6", - "@babel/generator": "^7.28.6", - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helpers": "^7.28.6", - "@babel/parser": "^7.28.6", "@babel/template": "^7.28.6", "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6", - "@jridgewell/remapping": "^2.3.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/core/node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "node_modules/@babel/helpers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", "dev": true, "license": "MIT", "dependencies": { - "ms": "^2.1.3" + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=6.9.0" } }, - "node_modules/@babel/core/node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "node_modules/@babel/parser": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.6.tgz", + "integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.6" + }, "bin": { - "json5": "lib/cli.js" + "parser": "bin/babel-parser.js" }, "engines": { - "node": ">=6" + "node": ">=6.0.0" } }, - "node_modules/@babel/core/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", + "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/generator": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.6.tgz", - "integrity": "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==", + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.6", - "@babel/types": "^7.28.6", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/generator/node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", "dev": true, "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { - "node": ">=6" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", - "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.27.3" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" } }, - "node_modules/@babel/helper-compilation-targets": { + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", - "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz", + "integrity": "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.28.6", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/browserslist": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", - "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], "license": "MIT", - "dependencies": { - "baseline-browser-mapping": "^2.9.0", - "caniuse-lite": "^1.0.30001759", - "electron-to-chromium": "^1.5.263", - "node-releases": "^2.0.27", - "update-browserslist-db": "^1.2.0" - }, - "bin": { - "browserslist": "cli.js" - }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], "license": "MIT", "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" + "@babel/helper-plugin-utils": "^7.8.0" }, - "bin": { - "update-browserslist-db": "cli.js" + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" }, "peerDependencies": { - "browserslist": ">= 4.21.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", - "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-member-expression-to-functions": "^7.28.5", - "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/helper-replace-supers": "^7.28.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/traverse": "^7.28.6", - "semver": "^6.3.1" + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", - "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.28.6.tgz", + "integrity": "sha512-D+OrJumc9McXNEBI/JmFnc/0uCM2/Y3PEBG3gfV3QIYkKv5pvnpzFrl1kYCrcHJP8nOeFB/SHi1IHz29pNGuew==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "regexpu-core": "^6.3.1", - "semver": "^6.3.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz", + "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==", "dev": true, "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { - "node": ">=6" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/regexpu-core": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", - "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", "dev": true, "license": "MIT", "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.2.2", - "regjsgen": "^0.8.0", - "regjsparser": "^0.13.0", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.2.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { - "node": ">=4" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/regjsparser": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", - "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "jsesc": "~3.1.0" + "@babel/helper-plugin-utils": "^7.10.4" }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", - "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-plugin-utils": "^7.27.1", - "debug": "^4.4.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.22.10" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", "dev": true, "license": "MIT", "dependencies": { - "ms": "^2.1.3" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { - "node": ">=6.0" + "node": ">=6.9.0" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, "license": "MIT", - "engines": { - "node": ">=6.9.0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", - "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.28.5", - "@babel/types": "^7.28.5" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", - "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6" + "@babel/helper-plugin-utils": "^7.10.4" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", - "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", - "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.27.1" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", - "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=6.9.0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", - "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-wrap-function": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", - "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.28.5", - "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/traverse": "^7.28.6" + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", - "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-validator-option": { + "node_modules/@babel/plugin-transform-arrow-functions": { "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz", - "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.28.6", - "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/helpers": { + "node_modules/@babel/plugin-transform-async-generator-functions": { "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", - "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.6.tgz", + "integrity": "sha512-9knsChgsMzBV5Yh3kkhrZNxH3oCYAfMBkNNaVN4cP2RVlFPe8wYdwwcnOsAbkdDoV9UjFtOXWrWB52M8W4jNeA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.28.6", - "@babel/types": "^7.28.6" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/parser": { + "node_modules/@babel/plugin-transform-async-to-generator": { "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.6.tgz", - "integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz", + "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.28.6" - }, - "bin": { - "parser": "bin/babel-parser.js" + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1" }, "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", - "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.28.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", - "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz", + "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", - "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz", + "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", - "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz", + "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/plugin-transform-optional-chaining": "^7.27.1" + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.13.0" + "@babel/core": "^7.12.0" } }, - "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "node_modules/@babel/plugin-transform-classes": { "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz", - "integrity": "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz", + "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==", "dev": true, "license": "MIT", "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-globals": "^7.28.0", "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-replace-supers": "^7.28.6", "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz", + "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/template": "^7.28.6" + }, "engines": { "node": ">=6.9.0" }, @@ -989,69 +956,81 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", + "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz", + "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.28.6.tgz", + "integrity": "sha512-5suVoXjC14lUN6ZL9OLKIHCNVWCrqGqlmEp/ixdXjvgnEl/kauLvvMO/Xw9NyMc95Joj1AeLVPVMvibBgSoFlA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-syntax-flow": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.28.6.tgz", - "integrity": "sha512-D+OrJumc9McXNEBI/JmFnc/0uCM2/Y3PEBG3gfV3QIYkKv5pvnpzFrl1kYCrcHJP8nOeFB/SHi1IHz29pNGuew==", + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1060,14 +1039,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-import-assertions": { + "node_modules/@babel/plugin-transform-explicit-resource-management": { "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz", - "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz", + "integrity": "sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -1076,10 +1056,10 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-import-attributes": { + "node_modules/@babel/plugin-transform-exponentiation-operator": { "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", - "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz", + "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==", "dev": true, "license": "MIT", "dependencies": { @@ -1092,40 +1072,48 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.27.1.tgz", + "integrity": "sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-flow": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", - "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1134,92 +1122,114 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz", + "integrity": "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "node_modules/@babel/plugin-transform-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz", + "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", + "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1228,14 +1238,17 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.28.5.tgz", + "integrity": "sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -1244,14 +1257,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", - "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1260,15 +1274,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1277,10 +1291,10 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-transform-arrow-functions": { + "node_modules/@babel/plugin-transform-new-target": { "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", - "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1293,16 +1307,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-async-generator-functions": { + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.6.tgz", - "integrity": "sha512-9knsChgsMzBV5Yh3kkhrZNxH3oCYAfMBkNNaVN4cP2RVlFPe8wYdwwcnOsAbkdDoV9UjFtOXWrWB52M8W4jNeA==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz", + "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-remap-async-to-generator": "^7.27.1", - "@babel/traverse": "^7.28.6" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1311,32 +1323,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-async-to-generator": { + "node_modules/@babel/plugin-transform-numeric-separator": { "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz", - "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-remap-async-to-generator": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", - "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz", + "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1345,14 +1339,18 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-block-scoping": { + "node_modules/@babel/plugin-transform-object-rest-spread": { "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz", - "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz", + "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1361,15 +1359,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz", - "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==", + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1378,53 +1376,31 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-class-static-block": { + "node_modules/@babel/plugin-transform-optional-catch-binding": { "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz", - "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz", + "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz", - "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-globals": "^7.28.0", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-replace-supers": "^7.28.6", - "@babel/traverse": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-computed-properties": { + "node_modules/@babel/plugin-transform-optional-chaining": { "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz", - "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz", + "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6", - "@babel/template": "^7.28.6" + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1433,15 +1409,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", - "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.28.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1450,14 +1425,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-dotall-regex": { + "node_modules/@babel/plugin-transform-private-methods": { "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz", - "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz", + "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-create-class-features-plugin": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { @@ -1467,43 +1442,28 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", - "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "node_modules/@babel/plugin-transform-private-property-in-object": { "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.28.6.tgz", - "integrity": "sha512-5suVoXjC14lUN6ZL9OLKIHCNVWCrqGqlmEp/ixdXjvgnEl/kauLvvMO/Xw9NyMc95Joj1AeLVPVMvibBgSoFlA==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz", + "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-dynamic-import": { + "node_modules/@babel/plugin-transform-property-literals": { "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", - "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1516,15 +1476,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-explicit-resource-management": { + "node_modules/@babel/plugin-transform-regenerator": { "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz", - "integrity": "sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.6.tgz", + "integrity": "sha512-eZhoEZHYQLL5uc1gS5e9/oTknS0sSSAtd5TkKMUp3J+S/CaUjagc0kOUPsEbDmMeva0nC3WWl4SxVY6+OBuxfw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/plugin-transform-destructuring": "^7.28.5" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1533,26 +1492,27 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { + "node_modules/@babel/plugin-transform-regexp-modifiers": { "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz", - "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz", + "integrity": "sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==", "dev": true, "license": "MIT", "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-transform-export-namespace-from": { + "node_modules/@babel/plugin-transform-reserved-words": { "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", - "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", "dev": true, "license": "MIT", "dependencies": { @@ -1565,15 +1525,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-flow-strip-types": { + "node_modules/@babel/plugin-transform-shorthand-properties": { "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.27.1.tgz", - "integrity": "sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-syntax-flow": "^7.27.1" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1582,14 +1541,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", - "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "node_modules/@babel/plugin-transform-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz", + "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { @@ -1599,16 +1558,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-function-name": { + "node_modules/@babel/plugin-transform-sticky-regex": { "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", - "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1617,14 +1574,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz", - "integrity": "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==", + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1633,10 +1590,10 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-literals": { + "node_modules/@babel/plugin-transform-typeof-symbol": { "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", - "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", "dev": true, "license": "MIT", "dependencies": { @@ -1649,14 +1606,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz", - "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==", + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1665,14 +1622,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", - "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz", + "integrity": "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1681,14 +1639,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-amd": { + "node_modules/@babel/plugin-transform-unicode-regex": { "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", - "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-create-regexp-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { @@ -1698,34 +1656,100 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-commonjs": { + "node_modules/@babel/plugin-transform-unicode-sets-regex": { "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", - "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz", + "integrity": "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-create-regexp-features-plugin": "^7.28.5", "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.28.5.tgz", - "integrity": "sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew==", + "node_modules/@babel/preset-env": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.6.tgz", + "integrity": "sha512-GaTI4nXDrs7l0qaJ6Rg06dtOXTBCG6TMDB44zbqofCIC4PqC7SEvmFFtpxzCDw9W5aJ7RKVshgXTLvLdBFV/qw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.28.3", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.28.5" + "@babel/compat-data": "^7.28.6", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.28.6", + "@babel/plugin-syntax-import-attributes": "^7.28.6", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.28.6", + "@babel/plugin-transform-async-to-generator": "^7.28.6", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.6", + "@babel/plugin-transform-class-properties": "^7.28.6", + "@babel/plugin-transform-class-static-block": "^7.28.6", + "@babel/plugin-transform-classes": "^7.28.6", + "@babel/plugin-transform-computed-properties": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-dotall-regex": "^7.28.6", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.28.6", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.6", + "@babel/plugin-transform-exponentiation-operator": "^7.28.6", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.28.6", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.28.6", + "@babel/plugin-transform-modules-systemjs": "^7.28.5", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", + "@babel/plugin-transform-numeric-separator": "^7.28.6", + "@babel/plugin-transform-object-rest-spread": "^7.28.6", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.28.6", + "@babel/plugin-transform-optional-chaining": "^7.28.6", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.28.6", + "@babel/plugin-transform-private-property-in-object": "^7.28.6", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.28.6", + "@babel/plugin-transform-regexp-modifiers": "^7.28.6", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.28.6", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.28.6", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "core-js-compat": "^3.43.0", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -1734,2109 +1758,985 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", - "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", - "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", - "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", + "node_modules/@babel/traverse": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.6.tgz", + "integrity": "sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/code-frame": "^7.28.6", + "@babel/generator": "^7.28.6", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.6", + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "node_modules/@babel/types": { "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz", - "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz", + "integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz", - "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==", + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@emnapi/core": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", + "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" } }, - "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz", - "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==", + "node_modules/@emnapi/runtime": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", + "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/plugin-transform-destructuring": "^7.28.5", - "@babel/plugin-transform-parameters": "^7.27.7", - "@babel/traverse": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "tslib": "^2.4.0" } }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", - "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "tslib": "^2.4.0" } }, - "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz", - "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==", + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=12" } }, - "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz", - "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==", + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" - }, "engines": { - "node": ">=6.9.0" + "node": ">=12" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.27.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", - "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, "engines": { - "node": ">=6.9.0" + "node": ">=12" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz", - "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==", + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=6.9.0" + "node": ">=12" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz", - "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==", + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-create-class-features-plugin": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=6.9.0" + "node": ">=12" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", - "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=6.9.0" + "node": ">=12" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.6.tgz", - "integrity": "sha512-eZhoEZHYQLL5uc1gS5e9/oTknS0sSSAtd5TkKMUp3J+S/CaUjagc0kOUPsEbDmMeva0nC3WWl4SxVY6+OBuxfw==", + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=8" } }, - "node_modules/@babel/plugin-transform-regexp-modifiers": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz", - "integrity": "sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==", + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.28.6" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=8" } }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", - "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "node_modules/@jest/console": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz", + "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "slash": "^3.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", - "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "node_modules/@jest/console/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=8" } }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz", - "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==", + "node_modules/@jest/core": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.2.0.tgz", + "integrity": "sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + "@jest/console": "30.2.0", + "@jest/pattern": "30.0.1", + "@jest/reporters": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "exit-x": "^0.2.2", + "graceful-fs": "^4.2.11", + "jest-changed-files": "30.2.0", + "jest-config": "30.2.0", + "jest-haste-map": "30.2.0", + "jest-message-util": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.2.0", + "jest-resolve-dependencies": "30.2.0", + "jest-runner": "30.2.0", + "jest-runtime": "30.2.0", + "jest-snapshot": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "jest-watcher": "30.2.0", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", - "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "node_modules/@jest/core/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=8" } }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", - "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "node_modules/@jest/diff-sequences": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", + "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", - "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "node_modules/@jest/environment": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", + "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-mock": "30.2.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", - "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "node_modules/@jest/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "expect": "30.2.0", + "jest-snapshot": "30.2.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz", - "integrity": "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==", + "node_modules/@jest/expect-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", + "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.28.6" + "@jest/get-type": "30.1.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", - "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "node_modules/@jest/fake-timers": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", + "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@jest/types": "30.2.0", + "@sinonjs/fake-timers": "^13.0.0", + "@types/node": "*", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz", - "integrity": "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==", + "node_modules/@jest/get-type": { + "version": "30.1.0", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", + "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.28.6" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@babel/preset-env": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.6.tgz", - "integrity": "sha512-GaTI4nXDrs7l0qaJ6Rg06dtOXTBCG6TMDB44zbqofCIC4PqC7SEvmFFtpxzCDw9W5aJ7RKVshgXTLvLdBFV/qw==", + "node_modules/@jest/globals": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.2.0.tgz", + "integrity": "sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.28.6", - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.28.6", - "@babel/plugin-syntax-import-attributes": "^7.28.6", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.27.1", - "@babel/plugin-transform-async-generator-functions": "^7.28.6", - "@babel/plugin-transform-async-to-generator": "^7.28.6", - "@babel/plugin-transform-block-scoped-functions": "^7.27.1", - "@babel/plugin-transform-block-scoping": "^7.28.6", - "@babel/plugin-transform-class-properties": "^7.28.6", - "@babel/plugin-transform-class-static-block": "^7.28.6", - "@babel/plugin-transform-classes": "^7.28.6", - "@babel/plugin-transform-computed-properties": "^7.28.6", - "@babel/plugin-transform-destructuring": "^7.28.5", - "@babel/plugin-transform-dotall-regex": "^7.28.6", - "@babel/plugin-transform-duplicate-keys": "^7.27.1", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.28.6", - "@babel/plugin-transform-dynamic-import": "^7.27.1", - "@babel/plugin-transform-explicit-resource-management": "^7.28.6", - "@babel/plugin-transform-exponentiation-operator": "^7.28.6", - "@babel/plugin-transform-export-namespace-from": "^7.27.1", - "@babel/plugin-transform-for-of": "^7.27.1", - "@babel/plugin-transform-function-name": "^7.27.1", - "@babel/plugin-transform-json-strings": "^7.28.6", - "@babel/plugin-transform-literals": "^7.27.1", - "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", - "@babel/plugin-transform-member-expression-literals": "^7.27.1", - "@babel/plugin-transform-modules-amd": "^7.27.1", - "@babel/plugin-transform-modules-commonjs": "^7.28.6", - "@babel/plugin-transform-modules-systemjs": "^7.28.5", - "@babel/plugin-transform-modules-umd": "^7.27.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", - "@babel/plugin-transform-new-target": "^7.27.1", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", - "@babel/plugin-transform-numeric-separator": "^7.28.6", - "@babel/plugin-transform-object-rest-spread": "^7.28.6", - "@babel/plugin-transform-object-super": "^7.27.1", - "@babel/plugin-transform-optional-catch-binding": "^7.28.6", - "@babel/plugin-transform-optional-chaining": "^7.28.6", - "@babel/plugin-transform-parameters": "^7.27.7", - "@babel/plugin-transform-private-methods": "^7.28.6", - "@babel/plugin-transform-private-property-in-object": "^7.28.6", - "@babel/plugin-transform-property-literals": "^7.27.1", - "@babel/plugin-transform-regenerator": "^7.28.6", - "@babel/plugin-transform-regexp-modifiers": "^7.28.6", - "@babel/plugin-transform-reserved-words": "^7.27.1", - "@babel/plugin-transform-shorthand-properties": "^7.27.1", - "@babel/plugin-transform-spread": "^7.28.6", - "@babel/plugin-transform-sticky-regex": "^7.27.1", - "@babel/plugin-transform-template-literals": "^7.27.1", - "@babel/plugin-transform-typeof-symbol": "^7.27.1", - "@babel/plugin-transform-unicode-escapes": "^7.27.1", - "@babel/plugin-transform-unicode-property-regex": "^7.28.6", - "@babel/plugin-transform-unicode-regex": "^7.27.1", - "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.14", - "babel-plugin-polyfill-corejs3": "^0.13.0", - "babel-plugin-polyfill-regenerator": "^0.6.5", - "core-js-compat": "^3.43.0", - "semver": "^6.3.1" + "@jest/environment": "30.2.0", + "@jest/expect": "30.2.0", + "@jest/types": "30.2.0", + "jest-mock": "30.2.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/@jest/pattern": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", + "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-regex-util": "30.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@babel/preset-modules": { - "version": "0.1.6-no-external-plugins", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", - "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "node_modules/@jest/reporters": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.2.0.tgz", + "integrity": "sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", + "@types/node": "*", + "chalk": "^4.1.2", + "collect-v8-coverage": "^1.0.2", + "exit-x": "^0.2.2", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^5.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "slash": "^3.0.0", + "string-length": "^4.0.2", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@babel/template": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", - "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "node_modules/@jest/reporters/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.28.6", - "@babel/parser": "^7.28.6", - "@babel/types": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" + "balanced-match": "^1.0.0" } }, - "node_modules/@babel/traverse": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.6.tgz", - "integrity": "sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==", + "node_modules/@jest/reporters/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@babel/code-frame": "^7.28.6", - "@babel/generator": "^7.28.6", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.6", - "@babel/template": "^7.28.6", - "@babel/types": "^7.28.6", - "debug": "^4.3.1" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": ">=6.9.0" + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@babel/traverse/node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "node_modules/@jest/reporters/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "ms": "^2.1.3" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=6.0" + "node": ">=16 || 14 >=14.17" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@babel/traverse/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/types": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz", - "integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==", + "node_modules/@jest/reporters/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.28.5" - }, "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@emnapi/core": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", - "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.1.0", - "tslib": "^2.4.0" + "node": ">=8" } }, - "node_modules/@emnapi/runtime": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", - "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", + "node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "tslib": "^2.4.0" + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", - "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "node_modules/@jest/snapshot-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.2.0.tgz", + "integrity": "sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug==", "dev": true, "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "license": "ISC", "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + "@jest/types": "30.2.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "natural-compare": "^1.4.0" }, "engines": { - "node": ">=12" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "node_modules/@jest/source-map": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", + "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "callsites": "^3.1.0", + "graceful-fs": "^4.2.11" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/@jest/test-result": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz", + "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==", "dev": true, "license": "MIT", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "@jest/console": "30.2.0", + "@jest/types": "30.2.0", + "@types/istanbul-lib-coverage": "^2.0.6", + "collect-v8-coverage": "^1.0.2" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "node_modules/@jest/test-sequencer": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.2.0.tgz", + "integrity": "sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "@jest/test-result": "30.2.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "slash": "^3.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "node_modules/@jest/test-sequencer/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=8" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "node_modules/@jest/transform": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", + "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" + "@babel/core": "^7.27.4", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.1", + "chalk": "^4.1.2", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "micromatch": "^4.0.8", + "pirates": "^4.0.7", + "slash": "^3.0.0", + "write-file-atomic": "^5.0.1" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "node_modules/@jest/transform/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@jest/console": { + "node_modules/@jest/types": { "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz", - "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.2.0", + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", "@types/node": "*", - "chalk": "^4.1.2", - "jest-message-util": "30.2.0", - "jest-util": "30.2.0", - "slash": "^3.0.0" + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/console/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@jest/console/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@jest/console/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6.0.0" } }, - "node_modules/@jest/console/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@jest/core": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.2.0.tgz", - "integrity": "sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ==", + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@jest/console": "30.2.0", - "@jest/pattern": "30.0.1", - "@jest/reporters": "30.2.0", - "@jest/test-result": "30.2.0", - "@jest/transform": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "exit-x": "^0.2.2", - "graceful-fs": "^4.2.11", - "jest-changed-files": "30.2.0", - "jest-config": "30.2.0", - "jest-haste-map": "30.2.0", - "jest-message-util": "30.2.0", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.2.0", - "jest-resolve-dependencies": "30.2.0", - "jest-runner": "30.2.0", - "jest-runtime": "30.2.0", - "jest-snapshot": "30.2.0", - "jest-util": "30.2.0", - "jest-validate": "30.2.0", - "jest-watcher": "30.2.0", - "micromatch": "^4.0.8", - "pretty-format": "30.2.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" } }, - "node_modules/@jest/core/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@nicolo-ribaudo/chokidar-2": { + "version": "2.1.8-no-fsevents.3", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", + "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==", "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } + "optional": true }, - "node_modules/@jest/core/node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, + "optional": true, "engines": { - "node": ">=8" + "node": ">=14" } }, - "node_modules/@jest/core/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://opencollective.com/pkgr" } }, - "node_modules/@jest/core/node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/@sinclair/typebox": { + "version": "0.34.47", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.47.tgz", + "integrity": "sha512-ZGIBQ+XDvO5JQku9wmwtabcVTHJsgSWAHYtVuM9pBNNR5E88v6Jcj/llpmsjivig5X8A8HHOb4/mbEKPS5EvAw==", "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/@jest/core/node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" + "type-detect": "4.0.8" } }, - "node_modules/@jest/core/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" } }, - "node_modules/@jest/core/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "optional": true, + "dependencies": { + "tslib": "^2.4.0" } }, - "node_modules/@jest/core/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "node_modules/@jest/diff-sequences": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", - "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", "dev": true, "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "dependencies": { + "@babel/types": "^7.0.0" } }, - "node_modules/@jest/environment": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", - "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, "license": "MIT", "dependencies": { - "@jest/fake-timers": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "jest-mock": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "node_modules/@jest/expect": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.2.0.tgz", - "integrity": "sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==", + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", "dev": true, "license": "MIT", "dependencies": { - "expect": "30.2.0", - "jest-snapshot": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "@babel/types": "^7.28.2" } }, - "node_modules/@jest/expect-utils": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", - "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "license": "MIT" }, - "node_modules/@jest/fake-timers": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", - "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.2.0", - "@sinonjs/fake-timers": "^13.0.0", - "@types/node": "*", - "jest-message-util": "30.2.0", - "jest-mock": "30.2.0", - "jest-util": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/get-type": { - "version": "30.1.0", - "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", - "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/@jest/globals": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.2.0.tgz", - "integrity": "sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw==", + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.2.0", - "@jest/expect": "30.2.0", - "@jest/types": "30.2.0", - "jest-mock": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "@types/istanbul-lib-report": "*" } }, - "node_modules/@jest/pattern": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", - "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", + "node_modules/@types/node": { + "version": "25.0.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.10.tgz", + "integrity": "sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "jest-regex-util": "30.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "undici-types": "~7.16.0" } }, - "node_modules/@jest/reporters": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.2.0.tgz", - "integrity": "sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ==", + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "dev": true, - "license": "MIT", - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "30.2.0", - "@jest/test-result": "30.2.0", - "@jest/transform": "30.2.0", - "@jest/types": "30.2.0", - "@jridgewell/trace-mapping": "^0.3.25", - "@types/node": "*", - "chalk": "^4.1.2", - "collect-v8-coverage": "^1.0.2", - "exit-x": "^0.2.2", - "glob": "^10.3.10", - "graceful-fs": "^4.2.11", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^5.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "30.2.0", - "jest-util": "30.2.0", - "jest-worker": "30.2.0", - "slash": "^3.0.0", - "string-length": "^4.0.2", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } + "license": "MIT" }, - "node_modules/@jest/reporters/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@types/yargs": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@types/yargs-parser": "*" } }, - "node_modules/@jest/reporters/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } + "license": "MIT" }, - "node_modules/@jest/reporters/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } + "license": "ISC" }, - "node_modules/@jest/reporters/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } + "license": "MIT", + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@jest/reporters/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } + "license": "MIT", + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@jest/reporters/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">=8" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@jest/reporters/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/snapshot-utils": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.2.0.tgz", - "integrity": "sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "natural-compare": "^1.4.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/snapshot-utils/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/snapshot-utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/snapshot-utils/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/source-map": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", - "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "callsites": "^3.1.0", - "graceful-fs": "^4.2.11" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz", - "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "30.2.0", - "@jest/types": "30.2.0", - "@types/istanbul-lib-coverage": "^2.0.6", - "collect-v8-coverage": "^1.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.2.0.tgz", - "integrity": "sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "30.2.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.2.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/test-sequencer/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/transform": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", - "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@jest/types": "30.2.0", - "@jridgewell/trace-mapping": "^0.3.25", - "babel-plugin-istanbul": "^7.0.1", - "chalk": "^4.1.2", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.2.0", - "jest-regex-util": "30.0.1", - "jest-util": "30.2.0", - "micromatch": "^4.0.8", - "pirates": "^4.0.7", - "slash": "^3.0.0", - "write-file-atomic": "^5.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/transform/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/transform/node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/transform/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/transform/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/transform/node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/transform/node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/@jest/transform/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@jest/transform/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/transform/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/types": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/types/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/types/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", - "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.4.3", - "@emnapi/runtime": "^1.4.3", - "@tybys/wasm-util": "^0.10.0" - } - }, - "node_modules/@nicolo-ribaudo/chokidar-2": { - "version": "2.1.8-no-fsevents.3", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", - "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@pkgr/core": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", - "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/pkgr" - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.34.47", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.47.tgz", - "integrity": "sha512-ZGIBQ+XDvO5JQku9wmwtabcVTHJsgSWAHYtVuM9pBNNR5E88v6Jcj/llpmsjivig5X8A8HHOb4/mbEKPS5EvAw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", - "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1" - } - }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", - "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", - "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.2" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/node": { - "version": "25.0.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", - "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~7.16.0" - } - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/yargs": { - "version": "17.0.35", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", - "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true, - "license": "ISC" - }, - "node_modules/@unrs/resolver-binding-android-arm-eabi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", - "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-android-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", - "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", - "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", - "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-freebsd-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", - "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", - "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", - "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", - "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", - "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", - "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", - "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", - "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", - "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", - "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", - "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-wasm32-wasi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", - "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.11" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", - "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", - "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", - "cpu": [ - "ia32" - ], + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", "optional": true, "os": [ - "win32" + "darwin" ] }, - "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "node_modules/@unrs/resolver-binding-freebsd-x64": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", - "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", "cpu": [ "x64" ], @@ -3844,2035 +2744,1854 @@ "license": "MIT", "optional": true, "os": [ - "win32" + "freebsd" ] }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/babel-jest": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.2.0.tgz", - "integrity": "sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/transform": "30.2.0", - "@types/babel__core": "^7.20.5", - "babel-plugin-istanbul": "^7.0.1", - "babel-preset-jest": "30.2.0", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0 || ^8.0.0-0" - } - }, - "node_modules/babel-jest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/babel-jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/babel-jest/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-jest/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", - "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", - "dev": true, - "license": "BSD-3-Clause", - "workspaces": [ - "test/babel-8" + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" ], - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-instrument": "^6.0.2", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.2.0.tgz", - "integrity": "sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/babel__core": "^7.20.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", - "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.27.7", - "@babel/helper-define-polyfill-provider": "^0.6.5", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", - "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.5", - "core-js-compat": "^3.43.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", - "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.5" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", - "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5" - }, - "peerDependencies": { - "@babel/core": "^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/babel-preset-jest": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.2.0.tgz", - "integrity": "sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==", "dev": true, "license": "MIT", - "dependencies": { - "babel-plugin-jest-hoist": "30.2.0", - "babel-preset-current-node-syntax": "^1.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0 || ^8.0.0-beta.1" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/baseline-browser-mapping": { - "version": "2.9.16", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.16.tgz", - "integrity": "sha512-KeUZdBuxngy825i8xvzaK1Ncnkx0tBmb3k8DkEuqjKRkmtvNTjey2ZsNeh8Dw4lfKvbCOu9oeNx2TKm2vHqcRw==", + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.js" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], "dev": true, - "license": "Apache-2.0", - "dependencies": { - "node-int64": "^0.4.0" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">=6" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">=6" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/caniuse-lite": { - "version": "1.0.30001765", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001765.tgz", - "integrity": "sha512-LWcNtSyZrakjECqmpP4qdg0MMGdN368D7X8XvvAqOcqMv0RxnlqVKZl2V6/mBR68oYMxOZPLw/gO7DuisMHUvQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" ], - "license": "CC-BY-4.0" - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/ci-info": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", - "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" ], + "dev": true, "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "node_modules/cjs-module-lexer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", - "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">=8" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "type-fest": "^0.21.3" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "license": "MIT", "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" + "node": ">=8" } }, - "node_modules/collect-v8-coverage": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", - "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", - "dev": true, - "license": "MIT" - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/core-js-compat": { - "version": "3.47.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.47.0.tgz", - "integrity": "sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.28.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/core-js-compat/node_modules/browserslist": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", - "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", + "license": "ISC", "dependencies": { - "baseline-browser-mapping": "^2.9.0", - "caniuse-lite": "^1.0.30001759", - "electron-to-chromium": "^1.5.263", - "node-releases": "^2.0.27", - "update-browserslist-db": "^1.2.0" - }, - "bin": { - "browserslist": "cli.js" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">= 8" } }, - "node_modules/core-js-compat/node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], "license": "MIT", "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" + "sprintf-js": "~1.0.2" } }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "node_modules/babel-jest": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.2.0.tgz", + "integrity": "sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==", "dev": true, "license": "MIT", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "@jest/transform": "30.2.0", + "@types/babel__core": "^7.20.5", + "babel-plugin-istanbul": "^7.0.1", + "babel-preset-jest": "30.2.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "slash": "^3.0.0" }, "engines": { - "node": ">= 8" - } - }, - "node_modules/dedent": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz", - "integrity": "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-0" } }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "node_modules/babel-jest/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, - "license": "MIT" - }, - "node_modules/electron-to-chromium": { - "version": "1.5.267", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", - "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", - "dev": true, - "license": "ISC" - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "node_modules/babel-plugin-istanbul": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", + "test-exclude": "^6.0.0" + }, "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/error-ex": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", - "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "node_modules/babel-plugin-jest-hoist": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.2.0.tgz", + "integrity": "sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==", "dev": true, "license": "MIT", "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", + "@types/babel__core": "^7.20.5" + }, "engines": { - "node": ">=6" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", + "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.7", + "@babel/helper-define-polyfill-provider": "^0.6.5", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", + "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", "dev": true, "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" + "@babel/helper-define-polyfill-provider": "^0.6.5" }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/exit-x": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", - "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", + "node_modules/babel-preset-current-node-syntax": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.8.0" + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0 || ^8.0.0-0" } }, - "node_modules/expect": { + "node_modules/babel-preset-jest": { "version": "30.2.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", - "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.2.0.tgz", + "integrity": "sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/expect-utils": "30.2.0", - "@jest/get-type": "30.1.0", - "jest-matcher-utils": "30.2.0", - "jest-message-util": "30.2.0", - "jest-mock": "30.2.0", - "jest-util": "30.2.0" + "babel-plugin-jest-hoist": "30.2.0", + "babel-preset-current-node-syntax": "^1.2.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-beta.1" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, "license": "MIT" }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "node_modules/baseline-browser-mapping": { + "version": "2.9.17", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.17.tgz", + "integrity": "sha512-agD0MgJFUP/4nvjqzIB29zRPUuCF7Ge6mEv9s8dHrtYD7QWXRcx75rOADE/d5ah1NI+0vkDl0yorDd5U852IQQ==", "dev": true, "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", "dependencies": { - "bser": "2.1.1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" } }, - "node_modules/flow-bin": { - "version": "0.297.0", - "resolved": "https://registry.npmjs.org/flow-bin/-/flow-bin-0.297.0.tgz", - "integrity": "sha512-WN9MrYZss1dGs+MzMqz6DjqErRQyyRfcm+8IsQFaKrtfLZrWSCBil0rP/ukv+DLL0jbNxhdlp14ks15TyznL+A==", + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, "bin": { - "flow": "cli.js" + "browserslist": "cli.js" }, "engines": { - "node": ">=0.10.0" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node-int64": "^0.4.0" } }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true, - "license": "ISC", + "license": "MIT" + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=6" } }, - "node_modules/fs-readdir-recursive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "node_modules/caniuse-lite": { + "version": "1.0.30001765", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001765.tgz", + "integrity": "sha512-LWcNtSyZrakjECqmpP4qdg0MMGdN368D7X8XvvAqOcqMv0RxnlqVKZl2V6/mBR68oYMxOZPLw/gO7DuisMHUvQ==", "dev": true, - "license": "ISC" + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": ">=10" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, - "license": "ISC", + "license": "MIT", + "optional": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "license": "MIT", "engines": { - "node": ">=8.0.0" + "node": ">=8" } }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/cjs-module-lexer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", + "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "MIT" }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=12" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "node_modules/collect-v8-coverage": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", + "dev": true, + "license": "MIT" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { - "function-bind": "^1.1.2" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 0.4" + "node": ">=7.0.0" } }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, "license": "MIT" }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "engines": { - "node": ">=10.17.0" + "node": ">= 6" } }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/core-js-compat": { + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.48.0.tgz", + "integrity": "sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==", "dev": true, "license": "MIT", "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" + "browserslist": "^4.28.1" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, "engines": { - "node": ">=0.8.19" + "node": ">= 8" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "node_modules/dedent": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz", + "integrity": "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==", "dev": true, - "license": "MIT" + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } + "license": "MIT" }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/electron-to-chromium": { + "version": "1.5.277", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.277.tgz", + "integrity": "sha512-wKXFZw4erWmmOz5N/grBoJ2XrNJGDFMu2+W5ACHza5rHtvsqrK4gb6rnLC7XxKB9WlJ+RmyQatuEXmtm86xbnw==", + "dev": true, + "license": "ISC" + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" } }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", - "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, + "license": "BSD-2-Clause", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/istanbul-lib-source-maps": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", - "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.23", - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/istanbul-lib-source-maps/node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "node_modules/exit-x": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", + "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", "dev": true, "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">= 0.8.0" } }, - "node_modules/istanbul-lib-source-maps/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/istanbul-reports": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", - "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "node_modules/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } + "license": "MIT" }, - "node_modules/jest": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-30.2.0.tgz", - "integrity": "sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==", + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@jest/core": "30.2.0", - "@jest/types": "30.2.0", - "import-local": "^3.2.0", - "jest-cli": "30.2.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "bser": "2.1.1" } }, - "node_modules/jest-changed-files": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.2.0.tgz", - "integrity": "sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ==", + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "license": "MIT", "dependencies": { - "execa": "^5.1.1", - "jest-util": "30.2.0", - "p-limit": "^3.1.0" + "to-regex-range": "^5.0.1" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=8" } }, - "node_modules/jest-circus": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.2.0.tgz", - "integrity": "sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg==", + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.2.0", - "@jest/expect": "30.2.0", - "@jest/test-result": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "co": "^4.6.0", - "dedent": "^1.6.0", - "is-generator-fn": "^2.1.0", - "jest-each": "30.2.0", - "jest-matcher-utils": "30.2.0", - "jest-message-util": "30.2.0", - "jest-runtime": "30.2.0", - "jest-snapshot": "30.2.0", - "jest-util": "30.2.0", - "p-limit": "^3.1.0", - "pretty-format": "30.2.0", - "pure-rand": "^7.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=8" } }, - "node_modules/jest-circus/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/flow-bin": { + "version": "0.297.0", + "resolved": "https://registry.npmjs.org/flow-bin/-/flow-bin-0.297.0.tgz", + "integrity": "sha512-WN9MrYZss1dGs+MzMqz6DjqErRQyyRfcm+8IsQFaKrtfLZrWSCBil0rP/ukv+DLL0jbNxhdlp14ks15TyznL+A==", "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" + "bin": { + "flow": "cli.js" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/jest-circus/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-circus/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": ">=8" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-circus/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", "dev": true, + "license": "MIT" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=8" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/jest-cli": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.2.0.tgz", - "integrity": "sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA==", + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/core": "30.2.0", - "@jest/test-result": "30.2.0", - "@jest/types": "30.2.0", - "chalk": "^4.1.2", - "exit-x": "^0.2.2", - "import-local": "^3.2.0", - "jest-config": "30.2.0", - "jest-util": "30.2.0", - "jest-validate": "30.2.0", - "yargs": "^17.7.2" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-cli/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=6.9.0" } }, - "node_modules/jest-cli/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "license": "ISC", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/jest-cli/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=8.0.0" } }, - "node_modules/jest-config": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.2.0.tgz", - "integrity": "sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA==", + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@jest/get-type": "30.1.0", - "@jest/pattern": "30.0.1", - "@jest/test-sequencer": "30.2.0", - "@jest/types": "30.2.0", - "babel-jest": "30.2.0", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "deepmerge": "^4.3.1", - "glob": "^10.3.10", - "graceful-fs": "^4.2.11", - "jest-circus": "30.2.0", - "jest-docblock": "30.2.0", - "jest-environment-node": "30.2.0", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.2.0", - "jest-runner": "30.2.0", - "jest-util": "30.2.0", - "jest-validate": "30.2.0", - "micromatch": "^4.0.8", - "parse-json": "^5.2.0", - "pretty-format": "30.2.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10" }, - "peerDependencies": { - "@types/node": "*", - "esbuild-register": ">=3.4.0", - "ts-node": ">=9.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "esbuild-register": { - "optional": true - }, - "ts-node": { - "optional": true - } + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-config/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "MIT", + "license": "ISC", + "optional": true, "dependencies": { - "color-convert": "^2.0.1" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 6" } }, - "node_modules/jest-config/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/jest-config/node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, "license": "MIT", "dependencies": { - "fill-range": "^7.1.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/jest-config/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-config/node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, "engines": { - "node": ">=8" + "node": ">=0.8.19" } }, - "node_modules/jest-config/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "license": "ISC", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/jest-config/node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" + "binary-extensions": "^2.0.0" }, "engines": { - "node": ">=8.6" + "node": ">=8" } }, - "node_modules/jest-config/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "hasown": "^2.0.2" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-config/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "license": "MIT", + "optional": true, "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": ">=0.10.0" } }, - "node_modules/jest-config/node_modules/slash": { + "node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/jest-config/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/jest-diff": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", - "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@jest/diff-sequences": "30.0.1", - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "pretty-format": "30.2.0" + "is-extglob": "^2.1.1" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-diff/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=0.12.0" } }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-diff/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, + "license": "BSD-3-Clause", "engines": { "node": ">=8" } }, - "node_modules/jest-docblock": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", - "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "detect-newline": "^3.1.0" + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10" } }, - "node_modules/jest-each": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.2.0.tgz", - "integrity": "sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ==", + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "@jest/types": "30.2.0", - "chalk": "^4.1.2", - "jest-util": "30.2.0", - "pretty-format": "30.2.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10" } }, - "node_modules/jest-each/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "color-convert": "^2.0.1" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=10" } }, - "node_modules/jest-each/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "semver": "^7.5.3" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-each/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/istanbul-lib-report/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/jest-environment-node": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.2.0.tgz", - "integrity": "sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA==", + "node_modules/istanbul-lib-source-maps": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "@jest/environment": "30.2.0", - "@jest/fake-timers": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "jest-mock": "30.2.0", - "jest-util": "30.2.0", - "jest-validate": "30.2.0" + "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10" } }, - "node_modules/jest-haste-map": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", - "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "anymatch": "^3.1.3", - "fb-watchman": "^2.0.2", - "graceful-fs": "^4.2.11", - "jest-regex-util": "30.0.1", - "jest-util": "30.2.0", - "jest-worker": "30.2.0", - "micromatch": "^4.0.8", - "walker": "^1.0.8" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.3" + "node": ">=8" } }, - "node_modules/jest-haste-map/node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": ">= 8" + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/jest-haste-map/node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "node_modules/jest": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-30.2.0.tgz", + "integrity": "sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==", "dev": true, "license": "MIT", "dependencies": { - "fill-range": "^7.1.1" + "@jest/core": "30.2.0", + "@jest/types": "30.2.0", + "import-local": "^3.2.0", + "jest-cli": "30.2.0" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/jest-haste-map/node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/jest-changed-files": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.2.0.tgz", + "integrity": "sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ==", "dev": true, "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" + "execa": "^5.1.1", + "jest-util": "30.2.0", + "p-limit": "^3.1.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/jest-haste-map/node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-haste-map/node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "node_modules/jest-circus": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.2.0.tgz", + "integrity": "sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg==", "dev": true, "license": "MIT", "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" + "@jest/environment": "30.2.0", + "@jest/expect": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "co": "^4.6.0", + "dedent": "^1.6.0", + "is-generator-fn": "^2.1.0", + "jest-each": "30.2.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-runtime": "30.2.0", + "jest-snapshot": "30.2.0", + "jest-util": "30.2.0", + "p-limit": "^3.1.0", + "pretty-format": "30.2.0", + "pure-rand": "^7.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" }, "engines": { - "node": ">=8.6" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-haste-map/node_modules/normalize-path": { + "node_modules/jest-circus/node_modules/slash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-haste-map/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": ">=8" } }, - "node_modules/jest-leak-detector": { + "node_modules/jest-cli": { "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.2.0.tgz", - "integrity": "sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ==", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.2.0.tgz", + "integrity": "sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/get-type": "30.1.0", - "pretty-format": "30.2.0" + "@jest/core": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/types": "30.2.0", + "chalk": "^4.1.2", + "exit-x": "^0.2.2", + "import-local": "^3.2.0", + "jest-config": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "yargs": "^17.7.2" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/jest-matcher-utils": { + "node_modules/jest-config": { "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", - "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.2.0.tgz", + "integrity": "sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA==", "dev": true, "license": "MIT", "dependencies": { + "@babel/core": "^7.27.4", "@jest/get-type": "30.1.0", + "@jest/pattern": "30.0.1", + "@jest/test-sequencer": "30.2.0", + "@jest/types": "30.2.0", + "babel-jest": "30.2.0", "chalk": "^4.1.2", - "jest-diff": "30.2.0", - "pretty-format": "30.2.0" + "ci-info": "^4.2.0", + "deepmerge": "^4.3.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", + "jest-circus": "30.2.0", + "jest-docblock": "30.2.0", + "jest-environment-node": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.2.0", + "jest-runner": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "micromatch": "^4.0.8", + "parse-json": "^5.2.0", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "esbuild-register": ">=3.4.0", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "esbuild-register": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/jest-config/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "balanced-match": "^1.0.0" + } + }, + "node_modules/jest-config/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": ">=8" + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-matcher-utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/jest-config/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-matcher-utils/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/jest-config/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/jest-message-util": { + "node_modules/jest-diff": { "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", - "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", + "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@jest/types": "30.2.0", - "@types/stack-utils": "^2.0.3", + "@jest/diff-sequences": "30.0.1", + "@jest/get-type": "30.1.0", "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "micromatch": "^4.0.8", - "pretty-format": "30.2.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" + "pretty-format": "30.2.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/jest-docblock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", + "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "detect-newline": "^3.1.0" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-each": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.2.0.tgz", + "integrity": "sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "@jest/types": "30.2.0", + "chalk": "^4.1.2", + "jest-util": "30.2.0", + "pretty-format": "30.2.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-message-util/node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "node_modules/jest-environment-node": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.2.0.tgz", + "integrity": "sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA==", "dev": true, "license": "MIT", "dependencies": { - "fill-range": "^7.1.1" + "@jest/environment": "30.2.0", + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-mock": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-message-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/jest-haste-map": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", + "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@jest/types": "30.2.0", + "@types/node": "*", + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "micromatch": "^4.0.8", + "walker": "^1.0.8" }, "engines": { - "node": ">=10" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "optionalDependencies": { + "fsevents": "^2.3.3" } }, - "node_modules/jest-message-util/node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/jest-leak-detector": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.2.0.tgz", + "integrity": "sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ==", "dev": true, "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" + "@jest/get-type": "30.1.0", + "pretty-format": "30.2.0" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-message-util/node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "node_modules/jest-matcher-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", + "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", "dev": true, "license": "MIT", "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.2.0", + "pretty-format": "30.2.0" }, "engines": { - "node": ">=8.6" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-message-util/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/jest-message-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8.6" + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-message-util/node_modules/slash": { @@ -5885,19 +4604,6 @@ "node": ">=8" } }, - "node_modules/jest-message-util/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-mock": { "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", @@ -5975,39 +4681,6 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-resolve/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-resolve/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/jest-resolve/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -6018,19 +4691,6 @@ "node": ">=8" } }, - "node_modules/jest-resolve/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-runner": { "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.2.0.tgz", @@ -6065,73 +4725,6 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-runner/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-runner/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-runner/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-runner/node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/jest-runner/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-runtime": { "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.2.0.tgz", @@ -6166,22 +4759,6 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-runtime/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-runtime/node_modules/brace-expansion": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", @@ -6192,23 +4769,6 @@ "balanced-match": "^1.0.0" } }, - "node_modules/jest-runtime/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/jest-runtime/node_modules/glob": { "version": "10.5.0", "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", @@ -6256,19 +4816,6 @@ "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-snapshot": { "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz", @@ -6302,39 +4849,6 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-snapshot/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/jest-snapshot/node_modules/semver": { "version": "7.7.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", @@ -6348,81 +4862,35 @@ "node": ">=10" } }, - "node_modules/jest-snapshot/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-util": { "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", - "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-util/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-util/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/jest-util/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/jest-validate": { @@ -6443,22 +4911,6 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-validate/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-validate/node_modules/camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", @@ -6472,36 +4924,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-validate/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-watcher": { "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.2.0.tgz", @@ -6522,52 +4944,6 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-watcher/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-watcher/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-watcher/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-worker": { "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", @@ -6601,6 +4977,13 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, "node_modules/js-yaml": { "version": "3.14.2", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", @@ -6615,6 +4998,19 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -6629,6 +5025,19 @@ "dev": true, "license": "ISC" }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -6677,32 +5086,27 @@ } }, "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, "license": "MIT", "dependencies": { - "semver": "^7.5.3" + "pify": "^4.0.1", + "semver": "^5.6.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, "node_modules/make-dir/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "license": "ISC", "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "semver": "bin/semver" } }, "node_modules/makeerror": { @@ -6722,6 +5126,20 @@ "dev": true, "license": "MIT" }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", @@ -6755,6 +5173,13 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, "node_modules/napi-postinstall": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", @@ -6792,6 +5217,16 @@ "dev": true, "license": "MIT" }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -6981,13 +5416,13 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=8.6" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" @@ -7091,24 +5526,76 @@ "dev": true, "license": "MIT" }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regexpu-core": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.2.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", "dev": true, "license": "MIT" }, - "node_modules/regenerate-unicode-properties": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", - "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "node_modules/regjsparser": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", + "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "regenerate": "^1.4.2" + "jsesc": "~3.1.0" }, - "engines": { - "node": ">=4" + "bin": { + "regjsparser": "bin/parser" } }, "node_modules/require-directory": { @@ -7166,13 +5653,13 @@ } }, "node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" } }, "node_modules/shebang-command": { @@ -7205,6 +5692,37 @@ "dev": true, "license": "ISC" }, + "node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -7225,16 +5743,6 @@ "node": ">=10" } }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -7249,29 +5757,6 @@ "node": ">=10" } }, - "node_modules/string-length/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-length/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -7303,40 +5788,7 @@ "node": ">=8" } }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { + "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", @@ -7363,16 +5815,6 @@ "node": ">=8" } }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -7406,6 +5848,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -7470,16 +5925,6 @@ "node": ">=8.0" } }, - "node_modules/to-regex-range/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", @@ -7597,6 +6042,37 @@ "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" } }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/v8-to-istanbul": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", @@ -7612,13 +6088,6 @@ "node": ">=10.12.0" } }, - "node_modules/v8-to-istanbul/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -7682,84 +6151,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index 153cc2a..fd9bd34 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aisparser", - "version": "0.0.13", + "version": "0.1.2", "private": false, "description": "parser for NMEA0183 AIS messages", "keywords": [ @@ -8,10 +8,10 @@ ], "repository": { "type": "git", - "url": "git+https://github.com/samothx/AisParser.git" + "url": "git+https://github.com/dakk/AisParser.git" }, "bugs": { - "url": "https://github.com/samothx/AisParser/issues", + "url": "https://github.com/dakk/AisParser/issues", "email": "support@etnur.net" }, "license": "Apache-2.0", @@ -35,13 +35,16 @@ "jest": "^30.2.0", "random-seed": "^0.3.0" }, - "homepage": "https://github.com/samothx/AisParser#readme", + "homepage": "https://github.com/dakk/AisParser#readme", "directories": { "doc": "docs", "test": "test" }, "dependencies": {}, "author": "Thomas Runte (http://www.etnur.net)", + "contributors": [ + "Davide Gessa (https://github.com/dakk/)" + ], "jest": { "testPathIgnorePatterns": ["/node_modules/", "/testHelper/"], "testEnvironmentOptions": { From 8d67b637488a755cfbfed5b44f91a19dfc81d5c8 Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Thu, 22 Jan 2026 14:44:48 +0100 Subject: [PATCH 32/33] add contributing, minors on readme --- CONTRIBUTING.md | 7 +++++++ README.md | 13 ++++++------- 2 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..77342f4 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,7 @@ +This library is written using [flow](https://flowtype.org/). It can be run from the src directory with babel-node or in the transpiled version from the index.js file or the lib directory. While using from github, you will need to take care of transpiling by calling the following commands: + +``` +cd +npm install +npm run-script transpile +``` \ No newline at end of file diff --git a/README.md b/README.md index 0fe3809..6fee1d7 100644 --- a/README.md +++ b/README.md @@ -5,18 +5,16 @@ A Parser for NMEA0183 AIS messages. -## Installation -The parser is written using [flow](https://flowtype.org/). It can be run from the src directory with babel-node or in the transpiled version from the index.js file or the lib directory. If you are using the NPM package ( add "aisparser" :">=0.0.12" to your package.json dependencies) you do not have to worry about transpiling, it has been done for you allready. If you are using the github package you will need to take care of transpiling by calling the following commands: -``` -cd -npm install -npm run-script transpile +```bash +npm i aisparser ``` + + ## How it works The modules approach to parsing AIS messages is 'on demand'. A message is merely stored and some basic checks are done by the **parse** function. When data is requested only as much of the message is parsed as is needed to decode the requested data. For instance when the aisType is read only one byte of the message is actually translated and parsed. So it makes sense to only read the values that are really needed. Although some common values are cached in the result object once they have been requested, most values are not - meaning that they are parsed every time they are requested. -The Module parses AIS messages of types 1,2,3,4,5,8,9,14,18,19,21 and 24. These are the common message types, most other types are related to inter vessel or vessel to shore communication. +The Module parses AIS messages of types 1,2,3,4,5,8,9,14,18,19,21,24 and 27. These are the common message types, most other types are related to inter vessel or vessel to shore communication. Although the parser has been thoroughly checked against AIS logs from AISHub and AIS recordings from the Panama Canal, the author takes no responsibility for the correctness of returned values. Please always keep a good watch and an eye on the traffic while commanding a vessel. @@ -116,6 +114,7 @@ After executing the command the file output1000.csv should contain comma separat The last parameter delivers the type of data to be read. When set to sigk it will try to parse a format delivered by the signalk-node-server that puts a timestamp and a source tag in front of every line. ## Usage: (as in samples/Sample.js) + ```javascript var AisParser = require('../index'); From 7a91e39c0c7819121fe332471709712591eb0352 Mon Sep 17 00:00:00 2001 From: Davide Gessa Date: Thu, 22 Jan 2026 14:50:58 +0100 Subject: [PATCH 33/33] add npm badge on readme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 6fee1d7..1af07e6 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # AisParser +[![npm version](https://img.shields.io/npm/v/aisparser.svg)](https://www.npmjs.com/package/aisparser) [![Tests](https://github.com/dakk/AisParser/actions/workflows/test.yml/badge.svg)](https://github.com/dakk/AisParser/actions/workflows/test.yml) [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)