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 new file mode 100644 index 0000000..2ea1b7c --- /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, 24] + + 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/.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/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/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..1af07e6 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,21 @@ # 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) + 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,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. @@ -112,6 +115,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'); 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| 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 8d7c9bd..b50c80c 100644 --- a/lib/Ais08Msg.js +++ b/lib/Ais08Msg.js @@ -1,30 +1,27 @@ -'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 . + * 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 @@ -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 new file mode 100644 index 0000000..804a0c2 --- /dev/null +++ b/lib/Ais08MsgDac1Fid21.js @@ -0,0 +1,308 @@ +"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 +}); +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 . + * + * 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 = 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; + } + + // |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); + } + + // |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; + } + + // |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: "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; + } + }]); +}(_AisMessage2["default"]); diff --git a/lib/Ais08MsgDac1Fid29.js b/lib/Ais08MsgDac1Fid29.js new file mode 100644 index 0000000..2f79782 --- /dev/null +++ b/lib/Ais08MsgDac1Fid29.js @@ -0,0 +1,125 @@ +"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 +}); +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 . + * + * 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 = 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; + } + + // |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(/^@+/, '')); + } + }]); +}(_AisMessage2["default"]); diff --git a/lib/Ais08MsgDac1Fid30.js b/lib/Ais08MsgDac1Fid30.js new file mode 100644 index 0000000..6b6b1c2 --- /dev/null +++ b/lib/Ais08MsgDac1Fid30.js @@ -0,0 +1,159 @@ +"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 +}); +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 . + * + * 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', 'sequence', 'destinationMMSI', 'retransmitted', '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 |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 +|============================================================================== +*/ +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; + } + + // |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| + }, { + key: "fid", + get: function get() { + return this._bitField.getInt(82, 6, true); + } + + // |88-97 | 10 |Message linkage id | |u| + }, { + key: "msgLinkageId", + get: function get() { + return this._bitField.getInt(88, 10, true); + } + + // |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 new file mode 100644 index 0000000..a4bb32c --- /dev/null +++ b/lib/Ais08MsgDac1Fid31.js @@ -0,0 +1,598 @@ +"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 +}); +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 . + * + * 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 = 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; + } + } + + // |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 cfec141..43c1a7d 100644 --- a/lib/Ais08MsgDac200Fid10.js +++ b/lib/Ais08MsgDac200Fid10.js @@ -1,30 +1,27 @@ -'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 . + * 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 @@ -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 new file mode 100644 index 0000000..f1448df --- /dev/null +++ b/lib/Ais08MsgDac367Fid23.js @@ -0,0 +1,205 @@ +"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 +}); +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 . + * + * 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 = 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; + } + + // |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; + } + + // |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; + } + + // |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: "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; + } + }]); +}(_AisMessage2["default"]); diff --git a/lib/Ais08MsgDac367Fid24.js b/lib/Ais08MsgDac367Fid24.js new file mode 100644 index 0000000..fb2e368 --- /dev/null +++ b/lib/Ais08MsgDac367Fid24.js @@ -0,0 +1,158 @@ +"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 +}); +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 . + * + * 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 = 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; + } + + // |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; + } + + // |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; + } + + // |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: "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 new file mode 100644 index 0000000..b1675dc --- /dev/null +++ b/lib/Ais09Msg.js @@ -0,0 +1,227 @@ +"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 +}); +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 . + * + * 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 = exports["default"] = /*#__PURE__*/function (_AisMessage) { + function Ais09Msg(aisType, bitField, channel) { + var _this; + _classCallCheck(this, Ais09Msg); + _this = _callSuper(this, Ais09Msg, [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; + } + _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: "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: "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", + 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: "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); + } + }]); +}(_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 60b85ae..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); - } - }]); - - 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 e873c50..6ee282d 100644 --- a/lib/AisMessage.js +++ b/lib/AisMessage.js @@ -1,14 +1,20 @@ -'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 . * * 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 @@ -22,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', @@ -55,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', @@ -158,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"], @@ -450,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', @@ -483,8 +475,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', '1': 'GPS', @@ -496,7 +488,6 @@ var EPFD = { '7': 'Surveyed', '8': 'Galileo' }; - var UNITS = { 'aisType': 'number', 'channel': 'string', @@ -566,149 +557,68 @@ 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', + 'msgLinkageId': 'number', + 'retransmitted': 'boolean', + 'destinationMMSI': 'number', + 'sequence': 'number', + 'version': 'number', + 'altitude': 'm', + 'altitudeStatus': 'string', + 'altitudeSensor': 'number', + 'dte': 'boolean', + '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) { @@ -724,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); @@ -809,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); @@ -818,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(); @@ -826,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(); @@ -855,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(); @@ -876,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(); @@ -884,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(); @@ -896,7 +864,7 @@ var AisMessage = function () { return 'INVALID'; } }, { - key: 'sog', + key: "sog", get: function get() { if (typeof this._sog !== 'number') { this._sog = this._getRawSog(); @@ -909,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(); @@ -927,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(); @@ -936,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(); @@ -959,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(); @@ -988,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; @@ -1013,7 +1005,7 @@ var AisMessage = function () { } } }, { - key: 'dimToBow', + key: "dimToBow", get: function get() { if (!this._dimToBow) { this._dimToBow = this._getDimToBow() || NaN; @@ -1025,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; @@ -1040,7 +1037,7 @@ var AisMessage = function () { } } }, { - key: 'dimToStern', + key: "dimToStern", get: function get() { if (!this._dimToStern) { this._dimToStern = this._getDimToStern() || NaN; @@ -1052,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; @@ -1067,7 +1069,7 @@ var AisMessage = function () { } } }, { - key: 'dimToPort', + key: "dimToPort", get: function get() { if (!this._dimToPort) { this._dimToPort = this._getDimToPort() || NaN; @@ -1079,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; @@ -1094,7 +1101,7 @@ var AisMessage = function () { } } }, { - key: 'dimToStbrd', + key: "dimToStbrd", get: function get() { if (!this._dimToStbrd) { this._dimToStbrd = this._getDimToStbrd() || NaN; @@ -1106,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 9f47d28..f9e00b6 100644 --- a/lib/AisParser.js +++ b/lib/AisParser.js @@ -1,10 +1,35 @@ -'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 Thomas Runte . + * Copyright (C) 2017-2024 Thomas Runte . + * 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 @@ -18,63 +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 _Ais08Msg = require('./Ais08Msg'); - -var _Ais08Msg2 = _interopRequireDefault(_Ais08Msg); - -var _Ais08MsgDac200Fid = require('./Ais08MsgDac200Fid10'); - -var _Ais08MsgDac200Fid2 = _interopRequireDefault(_Ais08MsgDac200Fid); - -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, @@ -82,151 +50,163 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons var MOD_NAME = 'AisParser'; var DEBUG = false; - -var AisParser = function () { +var VALID_STARTS = ['!AIVDO', '!AIVDM', '!ANVDM', '!ABVDM', '!ANVDO', '!BSVDM', '!B2VDM', '!B1VDM', '!BSVDO']; +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 (part[0] !== '!AIVDM' && part[0] !== '!AIVDO') { - return _AisMessage2.default.fromError('UNSUPPORTED', 'not a supported AIS message:[' + String(part) + ']'); + if (!VALID_STARTS.includes(part[0])) { + 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 _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 _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 _Ais08MsgDac367Fid["default"](aisType, bitField, part[4]); + } else if (sentence.dac == 367 && sentence.fid == 24) { + return new _Ais08MsgDac367Fid2["default"](aisType, bitField, part[4]); + } else if (sentence.dac == 1 && sentence.fid == 21) { + return new _Ais08MsgDac1Fid["default"](aisType, bitField, part[4]); + } else if (sentence.dac == 1 && sentence.fid == 29) { + 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]); + 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 (!(sentence.startsWith('!AIVDO') || sentence.startsWith('!AIVDM'))) { + 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; @@ -237,8 +217,5 @@ var AisParser = function () { return chkSumStr === sentence.substr(idx + 1); } }]); - - return AisParser; }(); - module.exports = AisParser; 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..e197778 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,8154 +1,6247 @@ { "name": "aisparser", - "version": "0.0.13", + "version": "0.1.2", "lockfileVersion": 3, "requires": true, "packages": { "": { - "version": "0.0.13", + "name": "aisparser", + "version": "0.1.2", "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/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": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^3.0.0" + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "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/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, - "dependencies": { - "color-convert": "^1.9.0" - }, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, - "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/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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "@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": ">=4" + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "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/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": { - "has-flag": "^3.0.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": ">=4" + "node": ">=6.9.0" } }, - "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/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/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, - "bin": { - "acorn": "bin/acorn" + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" }, "engines": { - "node": ">=0.4.0" + "node": ">=6.9.0" } }, - "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/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": { - "acorn": "^5.0.0" + "@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/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/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": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.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/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/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, - "optional": true, + "license": "MIT", "dependencies": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", + "semver": "^6.3.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "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/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, - "engines": { - "node": ">=0.4.2" + "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/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/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": ">=4" + "node": ">=6.9.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/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/traverse": "^7.28.5", + "@babel/types": "^7.28.5" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" } }, - "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/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": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.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/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, - "optional": true, + "license": "MIT", "dependencies": { - "micromatch": "^2.1.5", - "normalize-path": "^2.0.0" + "@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/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/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", "dependencies": { - "default-require-extensions": "^1.0.0" + "@babel/types": "^7.27.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.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/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, - "dependencies": { - "sprintf-js": "~1.0.2" + "license": "MIT", + "engines": { + "node": ">=6.9.0" } }, - "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/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": { - "arr-flatten": "^1.0.1" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.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/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": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.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/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/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" } }, - "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/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/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/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/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": ">=0.10.0" + "node": ">=6.9.0" } }, - "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/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/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": ">=0.8" + "node": ">=6.9.0" } }, - "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/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/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, "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/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": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" + }, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, - "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/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": { - "lodash": "^4.14.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==", - "dev": true, + "@babel/types": "^7.28.6" + }, "bin": { - "atob": "bin/atob.js" + "parser": "bin/babel-parser.js" }, "engines": { - "node": ">= 0.4.0" + "node": ">=6.0.0" } }, - "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/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, - "engines": { - "node": "*" - } - }, - "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" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" }, - "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" + "engines": { + "node": ">=6.9.0" }, - "optionalDependencies": { - "chokidar": "^1.6.1" + "peerDependencies": { + "@babel/core": "^7.0.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/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": { - "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-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/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": { - "chalk": "^1.1.0", - "esutils": "^2.0.2", - "js-tokens": "^3.0.0" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "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/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-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-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-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/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": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "@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-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/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, - "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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/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-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.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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/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-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-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/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.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "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==", - "dev": true, - "bin": { - "babylon": "bin/babylon.js" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.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/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-plugin-utils": "^7.14.5" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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-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/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-plugin-utils": "^7.28.6" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-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/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-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/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-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/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": { - "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-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/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-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.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/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, - "bin": { - "jsesc": "bin/jsesc" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-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/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/helper-plugin-utils": "^7.28.6" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-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/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": { - "babel-helper-explode-assignable-expression": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.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/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-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-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/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" - } - }, - "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=", - "dev": true, - "engines": { - "node": ">=0.10.0" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-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/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-hoist-variables": "^6.22.0", - "babel-runtime": "^6.22.0", - "babel-traverse": "^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-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/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-helper-function-name": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-types": "^6.23.0", - "lodash": "^4.2.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-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/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", "dependencies": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-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/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": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-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/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-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.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.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-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": { - "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-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-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.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" + "@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-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-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": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.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==", - "dev": true, - "bin": { - "babylon": "bin/babylon.js" - } - }, - "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==", - "dev": true, + "@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/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-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/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.28.6" + }, "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-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": { - "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-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-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-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-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-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-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-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-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-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.22.0", - "babel-types": "^6.23.0" + "@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-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-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-runtime": "^6.22.0", - "babel-types": "^6.22.0", - "lodash": "^4.2.0" + "@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-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-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-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-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-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-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": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/template": "^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-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-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.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "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-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-types": "^6.24.1" + "@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-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-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-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.27.1" + }, + "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-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": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.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-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-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-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-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-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": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.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-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-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.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" + "@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-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-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": { - "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-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-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, - "bin": { - "babylon": "bin/babylon.js" + "license": "MIT", + "dependencies": { + "@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-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-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.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, "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-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-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, "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-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-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-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-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "@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-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-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": { - "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-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-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-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.27.1" + }, + "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-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": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.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-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-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-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-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-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-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": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.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-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-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-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" + "@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-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-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": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.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-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==", + "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, - "bin": { - "babylon": "bin/babylon.js" + "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-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==", + "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/helper-plugin-utils": "^7.28.6" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-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-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-plugin-utils": "^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-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-plugin-istanbul": "^4.1.5", - "babel-preset-jest": "^22.4.3" + "@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": "^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-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-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-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-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-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-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-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.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-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-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-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-functions": "^6.8.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-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-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": { - "babel-runtime": "^6.22.0" + "@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-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-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/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-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-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.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.27.1" + }, + "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-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": { - "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.28.6" + }, + "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-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-runtime": "^6.22.0", - "babel-template": "^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-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-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-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-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-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-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-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-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-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-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-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": { - "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-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/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-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-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-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-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-plugin-transform-strict-mode": "^6.22.0", - "babel-runtime": "^6.22.0", - "babel-template": "^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-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-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-hoist-variables": "^6.22.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.23.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-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-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": { - "babel-plugin-transform-es2015-modules-amd": "^6.22.0", - "babel-runtime": "^6.22.0", - "babel-template": "^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-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-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-replace-supers": "^6.22.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-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/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-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/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/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/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-runtime": "^6.22.0", - "babel-types": "^6.22.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/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/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-runtime": "^6.22.0" + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.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/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-regex": "^6.22.0", - "babel-runtime": "^6.22.0", - "babel-types": "^6.22.0" + "@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/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/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": { - "babel-runtime": "^6.22.0" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.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/@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, - "dependencies": { - "babel-runtime": "^6.22.0" - } + "license": "MIT" }, - "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/@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-regex": "^6.22.0", - "babel-runtime": "^6.22.0", - "regexpu-core": "^2.0.0" + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.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/@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-builder-binary-assignment-operator-visitor": "^6.24.1", - "babel-plugin-syntax-exponentiation-operator": "^6.8.0", - "babel-runtime": "^6.22.0" + "tslib": "^2.4.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/@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-plugin-syntax-flow": "^6.18.0", - "babel-runtime": "^6.22.0" + "tslib": "^2.4.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/@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": { - "regenerator-transform": "0.9.8" + "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": ">=12" } }, - "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/@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, - "dependencies": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.22.0" + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "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/@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, - "dependencies": { - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "regenerator-runtime": "^0.10.5" + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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/@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, - "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } + "license": "MIT" }, - "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/@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-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" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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/@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-plugin-jest-hoist": "^22.4.3", - "babel-plugin-syntax-object-rest-spread": "^6.13.0" + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "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/@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-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" + "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_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/@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": "ISC", "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.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" + }, + "engines": { + "node": ">=8" } }, - "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/@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, - "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.10.0" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "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/@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-runtime": "^6.22.0", - "babel-traverse": "^6.23.0", - "babel-types": "^6.23.0", - "babylon": "^6.11.0", - "lodash": "^4.2.0" + "@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": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.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/@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, - "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" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "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/@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-runtime": "^6.22.0", - "esutils": "^2.0.2", - "lodash": "^4.2.0", - "to-fast-properties": "^1.0.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": "^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/babylon": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.15.0.tgz", - "integrity": "sha1-umXPoagOF1mw6J+1YuJ9zK5wNI4=", + "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, - "bin": { - "babylon": "bin/babylon.js" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "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/@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, - "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" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.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/@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": { - "is-descriptor": "^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/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/@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": { + "expect": "30.2.0", + "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/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/@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, - "optional": true, + "license": "MIT", "dependencies": { - "tweetnacl": "^0.14.3" + "@jest/get-type": "30.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.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/@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, - "optional": 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/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/@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", - "optional": true, - "dependencies": { - "file-uri-to-path": "1.0.0" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.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/@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": { - "hoek": "4.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/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/@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": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@types/node": "*", + "jest-regex-util": "30.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.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/@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": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.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" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "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/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/@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": { - "resolve": "1.1.7" + "balanced-match": "^1.0.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/@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": { - "caniuse-lite": "^1.0.30000791", - "electron-to-chromium": "^1.3.30" + "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": { - "browserslist": "cli.js" + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "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/@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": { - "node-int64": "^0.4.0" + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "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/@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.0" + "node": ">=8" } }, - "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/@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": { - "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" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "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/@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": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "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/@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": ">=4" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "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/@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, - "optional": 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.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "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/@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, - "optional": true, + "license": "MIT", "dependencies": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" + "@jest/test-result": "30.2.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "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/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "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, - "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" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "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/@jest/transform": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", + "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", "dev": true, - "optional": true, + "license": "MIT", "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" + "@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" }, - "optionalDependencies": { - "fsevents": "^1.0.0" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "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/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/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, - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "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/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-descriptor": "^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/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/@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": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "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/@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": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "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/@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, - "dependencies": { - "kind-of": "^3.0.2" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6.0.0" } }, - "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/@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": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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=", - "dev": true, - "optional": true, - "dependencies": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - } - }, - "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=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.4.0" - } - }, - "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=", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "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=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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=", - "dev": true, - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.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==", - "dev": true, - "dependencies": { - "color-name": "^1.1.1" - } - }, - "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=", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "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=", - "dev": true, - "engines": { - "node": ">=0.10.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=", - "dev": true, - "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "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).", - "dev": true, - "dependencies": { - "boom": "5.x.x" - }, - "engines": { - "node": ">=4.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).", - "dev": true, - "dependencies": { - "hoek": "4.x.x" - }, - "engines": { - "node": ">=4.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=", - "dev": true, - "dependencies": { - "cssom": "0.3.x" - } - }, - "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=", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "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==", - "dev": true, - "dependencies": { - "abab": "^1.0.4", - "whatwg-mimetype": "^2.0.0", - "whatwg-url": "^6.4.0" - } - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "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/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=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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=", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "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=", - "dev": true, - "dependencies": { - "strip-bom": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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=", - "dev": true, - "dependencies": { - "foreach": "^2.0.5", - "object-keys": "^1.0.8" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.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=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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=", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "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=", - "dev": true, - "dependencies": { - "repeating": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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=", - "dev": true, - "engines": { - "node": ">=0.10.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==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "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", - "dev": true, - "dependencies": { - "webidl-conversions": "^4.0.2" - } - }, - "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=", - "dev": true, - "optional": true, - "dependencies": { - "jsbn": "~0.1.0" - } - }, - "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==", - "dev": true, - "dependencies": { - "electron-releases": "^2.1.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=", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.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==", - "dev": true, - "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" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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=", - "dev": true, - "dependencies": { - "is-callable": "^1.1.1", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "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==", - "dev": true, - "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" - }, - "engines": { - "node": ">=4.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "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=", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "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==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "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_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=", - "dev": true, - "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" - }, - "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_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=", - "dev": true, - "dependencies": { - "is-posix-bracket": "^0.1.0" - }, - "engines": { - "node": ">=0.10.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=", - "dev": true, - "dependencies": { - "fill-range": "^2.1.0" - }, - "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" - }, - "engines": { - "node": ">=4" - } - }, - "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=", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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=", - "dev": true, - "dependencies": { - "is-extglob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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=", - "dev": true, - "dependencies": { - "bser": "^2.0.0" - } - }, - "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==", - "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_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=", - "dev": true, - "dependencies": { - "glob": "^7.0.3", - "minimatch": "^3.0.3" - } - }, - "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=", - "dev": true, - "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" - } - }, - "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=", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/flow-bin": { - "version": "0.61.0", - "resolved": "https://registry.npmjs.org/flow-bin/-/flow-bin-0.61.0.tgz", - "integrity": "sha512-w6SGi5CDfKLNGzYssRhW6N37qKclDXijsxDQ5M8c3WbivRYta0Horv22bwakegfKBVDnyeS0lRW3OqBC74eq2g==", - "dev": true, - "bin": { - "flow": "cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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=", - "dev": true, - "dependencies": { - "for-in": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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=", - "dev": true, - "engines": { - "node": "*" - } - }, - "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=", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "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=", - "dev": true, - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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", - "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" - } - }, - "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=", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "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", - "dev": true, - "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": "*" - } - }, - "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=", - "dev": true, - "dependencies": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - }, - "engines": { - "node": ">=0.10.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=", - "dev": true, - "dependencies": { - "is-glob": "^2.0.0" - } - }, - "node_modules/globals": { - "version": "9.16.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.16.0.tgz", - "integrity": "sha1-Y+kDZYFx7C2fUbHTHeXiuNwB+4A=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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=", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "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=", - "dev": true, - "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" - } - }, - "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=", - "dev": true, - "dependencies": { - "amdefine": ">=0.0.4" - }, - "engines": { - "node": ">=0.8.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=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "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", - "dev": true, - "dependencies": { - "ajv": "^5.1.0", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "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=", - "dev": true, - "dependencies": { - "function-bind": "^1.0.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "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=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "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=", - "dev": true, - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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=", - "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" - } - }, - "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==", - "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" - } - }, - "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==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "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==", - "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-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=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "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==", - "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 - }, - "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==", - "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" - } - }, - "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==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "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==", - "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-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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "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==", - "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" - } - }, - "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==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "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==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } + "license": "MIT" }, - "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_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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "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==", - "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" - } - }, - "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==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "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==", - "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-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" - }, - "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" - } - }, - "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==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "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==", - "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/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" - }, - "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" - }, - "engines": { - "node": ">=4" - } - }, - "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/@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": "^3.0.0" - }, - "engines": { - "node": ">=4" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "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==", + "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": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" } }, - "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=", + "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/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" - } - }, - "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=", - "dev": true, - "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" - } - }, - "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=", - "dev": true, - "engines": { - "node": "*" - } - }, - "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=", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "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/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/@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_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=", - "dev": true, - "dependencies": { - "invert-kv": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "node": ">=14" } }, - "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/@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": ">=0.10.0" - } - }, - "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=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, - "engines": { - "node": ">= 0.8.0" + "funding": { + "url": "https://opencollective.com/pkgr" } }, - "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/@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, - "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" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "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/@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": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "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=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" + "type-detect": "4.0.8" } }, - "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/@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": { - "js-tokens": "^3.0.0" - }, - "bin": { - "loose-envify": "cli.js" + "@sinonjs/commons": "^3.0.1" } }, - "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/@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": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "tslib": "^2.4.0" } }, - "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/@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": { - "tmpl": "1.0.x" - } - }, - "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=", - "dev": true, - "engines": { - "node": ">=0.10.0" + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "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/@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": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@babel/types": "^7.0.0" } }, - "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/@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": { - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=4" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "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/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/@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": { - "readable-stream": "^2.0.1" - } - }, - "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=", - "dev": true, - "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" - }, - "engines": { - "node": ">=0.10.0" + "@babel/types": "^7.28.2" } }, - "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/@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.6" - } + "license": "MIT" }, - "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/@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": { - "mime-db": "~1.33.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=4" + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/minimatch": { + "node_modules/@types/istanbul-reports": { "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==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "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/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.", - "dev": true, - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", + "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": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" + "@types/istanbul-lib-report": "*" } }, - "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.)", + "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": { - "minimist": "0.0.8" - }, - "bin": { - "mkdirp": "bin/cmd.js" + "undici-types": "~7.16.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/@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", - "optional": true + "license": "MIT" }, - "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==", + "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": { - "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" - }, - "engines": { - "node": ">=0.10.0" + "@types/yargs-parser": "*" } }, - "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/@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, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "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/@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, - "engines": { - "node": ">=0.10.0" - } + "license": "ISC" }, - "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/@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": ">=0.10.0" - } + "license": "MIT", + "optional": true, + "os": [ + "android" + ] }, - "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/@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/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/@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/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/@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": { - "growly": "^1.3.0", - "semver": "^5.4.1", - "shellwords": "^0.1.1", - "which": "^1.3.0" - } + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] }, - "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/@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": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] }, - "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/@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": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "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/@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": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "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/@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": ">=0.10.0" - } + "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/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/@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/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/@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, - "engines": { - "node": "*" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "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/@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, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "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/@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": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } + "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/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/@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": { - "is-descriptor": "^0.1.0" + "@napi-rs/wasm-runtime": "^0.2.11" }, "engines": { - "node": ">=0.10.0" + "node": ">=14.0.0" } }, - "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/@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" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "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", + "optional": true, + "os": [ + "win32" + ] + }, + "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": { - "kind-of": "^3.0.2" + "type-fest": "^0.21.3" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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/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": { - "kind-of": "^3.0.2" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "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/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/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/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": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "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/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "engines": { - "node": ">= 0.4" + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" } }, - "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/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": { - "isobject": "^3.0.0" + "@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": ">=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-0" } }, - "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/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": ">=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/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": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" + "@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.8" + "node": ">=12" } }, - "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/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": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" + "@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/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/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": { - "isobject": "^3.0.1" + "@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/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/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, - "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/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/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": { - "wrappy": "1" + "@babel/helper-define-polyfill-provider": "^0.6.5" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "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/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": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" + "@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/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/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": { - "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" + "babel-plugin-jest-hoist": "30.2.0", + "babel-preset-current-node-syntax": "^1.2.0" }, "engines": { - "node": ">= 0.8.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/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": { + "node_modules/balanced-match": { "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=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-locale": { - "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/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, - "dependencies": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - }, - "engines": { - "node": ">=4" + "license": "MIT" + }, + "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/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/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": ">=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/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": { - "graceful-fs": "^4.1.4", - "mkdirp": "^0.5.1", - "object-assign": "^4.1.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "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/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": ">=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==", - "dev": true, + "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": { - "p-try": "^1.0.0" + "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": ">=4" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "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/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": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" + "node-int64": "^0.4.0" } }, - "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/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, - "engines": { - "node": ">=4" - } + "license": "MIT" }, - "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/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, - "dependencies": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "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/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, - "dependencies": { - "error-ex": "^1.2.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "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/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/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/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/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/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": ">=4" + "node": ">=10" } }, - "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/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": { + "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": ">=0.10.0" + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "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=", - "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": ">=4" + "node": ">=8" } }, - "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/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" }, - "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/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": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "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/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": ">=0.10.0" + "iojs": ">= 1.0.0", + "node": ">= 0.12.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/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, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/pinkie-promise": { + "node_modules/color-convert": { "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=", + "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": { - "pinkie": "^2.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "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/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, - "dependencies": { - "find-up": "^2.1.0" - }, - "engines": { - "node": ">=4" - } + "license": "MIT" }, - "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/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": ">=0.10.0" + "node": ">= 6" } }, - "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/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true, - "engines": { - "node": ">= 0.8.0" - } + "license": "MIT" }, - "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/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.10.0" - } + "license": "MIT" }, - "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/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": { - "ansi-regex": "^3.0.0", - "ansi-styles": "^3.2.0" + "browserslist": "^4.28.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "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=", + "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": ">=4" + "node": ">= 8" } }, - "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/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": { - "color-convert": "^1.9.0" + "ms": "^2.1.3" }, "engines": { - "node": ">=4" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/private": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", - "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", + "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.6" + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } } }, - "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/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/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": ">=6" + "node": ">=0.10.0" } }, - "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/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.6" + "node": ">=8" } }, - "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/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true, - "dependencies": { - "json-stringify-safe": "^5.0.1" - }, - "engines": { - "node": ">= 0.6.0" - } + "license": "MIT" }, - "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/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, - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">= 0.10.0" - } + "license": "ISC" }, - "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/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "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/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, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "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/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": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" + "is-arrayish": "^0.2.1" } }, - "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/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "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/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": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, + "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/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, - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "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/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, - "dependencies": { - "pinkie-promise": "^2.0.0" - }, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.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/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": { - "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" + "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/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/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, - "optional": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "minimatch": "^3.0.2", - "readable-stream": "^2.0.2", - "set-immediate-shim": "^1.0.1" - }, + "license": "MIT", "engines": { - "node": ">=0.6" + "node": ">= 0.8.0" } }, - "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/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": { - "util.promisify": "^1.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": ">=4" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "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/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/regenerator-transform": { - "version": "0.9.8", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.9.8.tgz", - "integrity": "sha1-D4i7K8A5Mt23trcxLmgHjwECbWw=", + "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": { - "babel-runtime": "^6.18.0", - "babel-types": "^6.19.0", - "private": "^0.1.6" + "bser": "2.1.1" } }, - "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/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-equal-shallow": "^0.1.3" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "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/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": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "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==", + "dev": true, + "license": "MIT", + "bin": { + "flow": "cli.js" }, "engines": { "node": ">=0.10.0" } }, - "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/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": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "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/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": { - "jsesc": "~0.5.0" + "license": "ISC", + "engines": { + "node": ">=14" }, - "bin": { - "regjsparser": "bin/parser" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/remove-trailing-separator": { + "node_modules/fs-readdir-recursive": { "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 + "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/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/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", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=0.10.0" + "node": "^8.16.0 || ^10.6.0 || >=11.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/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, - "engines": { - "node": ">=0.10" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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/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": { - "is-finite": "^1.0.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" } }, - "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/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": { - "lodash": "^4.13.1" - }, + "license": "ISC", "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "request": "^2.34" + "node": "6.* || 8.* || >= 10.*" } }, - "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/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, - "dependencies": { - "request-promise-core": "1.1.1", - "stealthy-require": "^1.1.0", - "tough-cookie": ">=2.3.3" - }, + "license": "MIT", "engines": { - "node": ">=0.12.0" - }, - "peerDependencies": { - "request": "^2.34" + "node": ">=8.0.0" } }, - "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/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.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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/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": { - "resolve-from": "^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": ">=4" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/resolve-from": { - "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=", + "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": { + "is-glob": "^4.0.1" + }, "engines": { - "node": ">=4" + "node": ">= 6" } }, - "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/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/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/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.12" + "node": ">=8" } }, - "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/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { - "align-text": "^0.1.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "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/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": { - "glob": "^7.0.5" - }, - "bin": { - "rimraf": "bin.js" - } + "license": "MIT" }, - "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=", + "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, - "dependencies": { - "ret": "~0.1.10" + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.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/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": { - "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" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" }, "bin": { - "sane": "src/cli.js" + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">=0.6.0" + "node": ">=8" }, - "optionalDependencies": { - "fsevents": "^1.1.1" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" + "license": "MIT", + "engines": { + "node": ">=0.8.19" } }, - "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=", + "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, - "engines": { - "node": ">=0.10.0" + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "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/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "ISC" }, - "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/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": { - "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" + "binary-extensions": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "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/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": { - "is-descriptor": "^1.0.0" + "hasown": "^2.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, + "license": "MIT", + "optional": true, "engines": { "node": ">=0.10.0" } }, - "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/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, - "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" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "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/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, - "dependencies": { - "is-descriptor": "^0.1.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "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/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-extendable": "^0.1.0" + "is-extglob": "^2.1.1" }, "engines": { "node": ">=0.10.0" } }, - "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/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": { - "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": ">=0.12.0" } }, - "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/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/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/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true, - "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" - }, + "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": "BSD-3-Clause", "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/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": { - "is-descriptor": "^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": ">=0.10.0" + "node": ">=10" } }, - "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/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": { - "is-extendable": "^0.1.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "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/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": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "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/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": { - "is-extendable": "^0.1.0" + "semver": "^7.5.3" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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/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, - "dependencies": { - "kind-of": "^3.0.2" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "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/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": { - "is-buffer": "^1.1.5" + "@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/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/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": { - "kind-of": "^3.0.2" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" }, "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/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": "BlueOak-1.0.0", "dependencies": { - "is-buffer": "^1.1.5" + "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "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": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-30.2.0.tgz", + "integrity": "sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==", "dev": true, + "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "@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/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-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": { - "is-buffer": "^1.1.5" + "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/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-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/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-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/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-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": { - "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" + "@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" }, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dev": true, "bin": { - "semver": "bin/semver" - } - }, - "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=", - "dev": true, - "optional": true, + "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/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-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": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" + "@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" }, - "engines": { - "node": ">=0.10.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-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": { + "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-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-extendable": "^0.1.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-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-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": { - "shebang-regex": "^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/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-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/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-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": { + "@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/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-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": { - "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" + "detect-newline": "^3.1.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "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-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": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" + "@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/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-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": { - "is-descriptor": "^1.0.0" + "@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/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-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.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.3" } }, - "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-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": { - "kind-of": "^3.2.0" + "@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/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-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": { - "is-descriptor": "^0.1.0" + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "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/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-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": { - "is-extendable": "^0.1.0" + "@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/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-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, - "dependencies": { - "kind-of": "^3.0.2" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "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-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-buffer": "^1.1.5" + "@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/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-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": { - "kind-of": "^3.0.2" + "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/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-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": { - "is-buffer": "^1.1.5" + "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/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-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-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.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/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-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, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "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-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": { - "hoek": "4.x.x" - }, - "engines": { - "node": ">=4.0.0" + "@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/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-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, - "engines": { - "node": ">=0.10.0" + "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/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": { + "balanced-match": "^1.0.0" } }, - "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-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": { - "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" + "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/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-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": { - "source-map": "^0.5.6" + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "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": { + "node_modules/jest-runtime/node_modules/slash": { "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==", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "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-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": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.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/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, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "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-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": { - "extend-shallow": "^3.0.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/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/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", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } }, - "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-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": { - "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" + "@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" - }, - "optionalDependencies": { - "bcrypt-pbkdf": "^1.0.0", - "ecc-jsbn": "~0.1.1", - "jsbn": "~0.1.0", - "tweetnacl": "~0.14.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "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=", + "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/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/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": { - "define-property": "^0.2.5", - "object-copy": "^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": ">=0.10.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "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/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": { - "is-descriptor": "^0.1.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/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/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": { - "kind-of": "^3.0.2" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "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/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", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, + "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "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/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/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, - "dependencies": { - "kind-of": "^3.0.2" + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "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/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, - "dependencies": { - "is-buffer": "^1.1.5" + "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, + "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": ">=0.10.0" + "node": ">=6" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=6" } }, - "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/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-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "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/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, - "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/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": { - "safe-buffer": "~5.1.0" + "yallist": "^3.0.2" } }, - "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/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": { - "astral-regex": "^1.0.0", - "strip-ansi": "^4.0.0" + "pify": "^4.0.1", + "semver": "^5.6.0" }, "engines": { - "node": ">=4" + "node": ">=6" } }, - "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/make-dir/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": ">=4" + "license": "ISC", + "bin": { + "semver": "bin/semver" } }, - "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/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" + "tmpl": "1.0.5" } }, - "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/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, + "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": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=4" + "node": ">=8.6" } }, - "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/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, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=6" } }, - "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/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": { - "ansi-regex": "^3.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=4" + "node": "*" } }, - "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/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": ">=16 || 14 >=14.17" } }, - "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/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, - "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "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/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, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, "engines": { - "node": ">=0.10.0" + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" } }, - "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/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true, - "engines": { - "node": ">=0.8.0" - } + "license": "MIT" }, - "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/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/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/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, - "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" - } + "license": "MIT" }, - "node_modules/test-exclude/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/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/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/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": { + "path-key": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "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/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, + "license": "ISC", "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" - }, - "engines": { - "node": ">=0.10.0" + "wrappy": "1" } }, - "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/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": { - "is-descriptor": "^1.0.0" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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/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": { - "is-extendable": "^0.1.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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/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": { - "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" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "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/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": { - "is-descriptor": "^0.1.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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/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, - "dependencies": { - "is-extendable": "^0.1.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "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/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/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": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "@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": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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/path-exists": { + "version": "4.0.0", + "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/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/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, - "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" - }, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "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/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": { - "is-descriptor": "^1.0.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "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/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, + "license": "MIT" + }, + "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/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/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": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, + "license": "ISC" + }, + "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, + "license": "ISC" + }, + "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.10.0" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "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/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-extendable": "^0.1.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "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/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, - "dependencies": { - "kind-of": "^3.0.2" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "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/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": { - "is-buffer": "^1.1.5" + "find-up": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "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/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": { - "kind-of": "^3.0.2" + "@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/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/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-buffer": "^1.1.5" - }, + "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/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/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, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, + "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": { - "kind-of": "^3.0.2" + "json-stringify-safe": "^5.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.6.0" } }, - "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/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, + "license": "MIT" + }, + "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": { - "is-buffer": "^1.1.5" + "picomatch": "^2.2.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.10.0" } }, - "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/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, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "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/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": ">=0.10.0" + "node": ">=4" } }, - "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/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": { - "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" + "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": ">=0.10.0" + "node": ">=4" } }, - "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/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/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/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "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/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": { - "kind-of": "^3.0.2" + "jsesc": "~3.1.0" }, - "engines": { - "node": ">=0.10.0" + "bin": { + "regjsparser": "bin/parser" } }, - "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/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": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "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/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-number": "^3.0.0", - "repeat-string": "^1.6.1" + "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/to-regex-range/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/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/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": { - "punycode": "^1.4.1" - }, + "license": "MIT", "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/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": { - "punycode": "^2.1.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "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/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/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/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": { - "safe-buffer": "^5.0.1" - }, + "license": "MIT", "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/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, - "optional": true + "license": "ISC" }, - "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/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, + "license": "MIT", "engines": { - "node": ">= 0.8.0" + "node": ">=6" } }, - "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/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, - "optional": true, - "dependencies": { - "source-map": "~0.5.1", - "yargs": "~3.10.0" - }, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, + "license": "BSD-3-Clause", "engines": { - "node": ">=0.8.0" - }, - "optionalDependencies": { - "uglify-to-browserify": "~1.0.0" + "node": ">=0.10.0" } }, - "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/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, - "optional": true, + "license": "MIT", "dependencies": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "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=", + "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, - "optional": true + "license": "BSD-3-Clause" }, - "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/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": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" + "escape-string-regexp": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "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/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": { - "is-extendable": "^0.1.0" + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "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/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": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/unset-value": { - "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=", + "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": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "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/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": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "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/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, + "license": "MIT", "dependencies": { - "isarray": "1.0.0" + "ansi-regex": "^5.0.1" }, "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/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, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "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/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, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "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/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, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "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/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": "^6.0.2" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "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/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", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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/synckit": { + "version": "0.11.12", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", + "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", "dev": true, - "bin": { - "user-home": "cli.js" + "license": "MIT", + "dependencies": { + "@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/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/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": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" } }, - "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/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", "dev": true, - "bin": { - "uuid": "bin/uuid" - } + "license": "BSD-3-Clause" }, - "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/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": { - "user-home": "^1.1.1" + "is-number": "^7.0.0" }, "engines": { - "node": ">= 0.10.0" + "node": ">=8.0" } }, - "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/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, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } + "license": "0BSD", + "optional": true }, - "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/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, - "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/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, - "dependencies": { - "browser-process-hrtime": "^0.1.2" + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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=", + "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": { - "makeerror": "1.0.x" + "license": "MIT" + }, + "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, + "license": "MIT", + "engines": { + "node": ">=4" } }, - "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/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": { - "exec-sh": "^0.2.0", - "minimist": "^1.2.0" - }, - "bin": { - "watch": "cli.js" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" }, "engines": { - "node": ">=0.1.95" + "node": ">=4" } }, - "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==", + "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": { - "iconv-lite": "0.4.19" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "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/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, - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.0", - "webidl-conversions": "^4.0.1" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "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/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": { - "isexe": "^2.0.0" + "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/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": { - "which": "bin/which" + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "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/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, - "optional": 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": ">= 0.8.0" + "node": ">=10.12.0" } }, - "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/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, - "engines": { - "node": ">=0.4.0" + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" } }, - "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/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": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" }, "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": { + "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": { - "number-is-nan": "^1.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?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-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": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "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..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", @@ -27,22 +27,28 @@ "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", + "homepage": "https://github.com/dakk/AisParser#readme", "directories": { "doc": "docs", "test": "test" }, "dependencies": {}, "author": "Thomas Runte (http://www.etnur.net)", - "jest" : { - "testPathIgnorePatterns" : ["/node_modules/","/testHelper/"], - "testURL": "http://localhost/" + "contributors": [ + "Davide Gessa (https://github.com/dakk/)" + ], + "jest": { + "testPathIgnorePatterns": ["/node_modules/", "/testHelper/"], + "testEnvironmentOptions": { + "url": "http://localhost/" + } } } 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/Ais08MsgDac1Fid21.js b/src/Ais08MsgDac1Fid21.js new file mode 100644 index 0000000..d4db9c6 --- /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) * 10; + } + + // |202-225 | 24 |Latitude |lat |I4| Lat in 1/1000 min, 2's complement + _getRawLat(): number { + return this._bitField.getInt(202, 24, false) * 10; + } + + // |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/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 new file mode 100644 index 0000000..11534b7 --- /dev/null +++ b/src/Ais08MsgDac1Fid30.js @@ -0,0 +1,138 @@ +// @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', + 'sequence', + 'destinationMMSI', + 'retransmitted', + '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 |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 +|============================================================================== +*/ + +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; + } + + + // |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(72, 10, true); + } + + // |82-87 | 6 |Function identifier |fid |u| + get fid(): number { + return this._bitField.getInt(82, 6, true); + } + + // |88-97 | 10 |Message linkage id | |u| + get msgLinkageId(): number { + return this._bitField.getInt(88, 10, true); + } + + // |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); + 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/Ais08MsgDac1Fid31.js b/src/Ais08MsgDac1Fid31.js new file mode 100644 index 0000000..c75b7d0 --- /dev/null +++ b/src/Ais08MsgDac1Fid31.js @@ -0,0 +1,554 @@ +// @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 ValueTrend = 'STEADY' | 'DECREASING' | 'INCREASING' | 'NA'; +export type PrecipitationType = 'RESERVED' | 'RAIN' | 'THUNDERSTORM' | 'FREEZING' | 'SNOW' | 'NA'; + + +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 + _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 + _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(): 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) || NaN; + } + + // |111-115 | 5 |Hour (UTC) |utcHour |u| 0-23; 24 = not available + get utcHour(): number { + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + let 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 + 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 { + let 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 + get waterLevel(): number { + let 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 + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + let 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 + get wavePeriod(): number { + 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 { + 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 { + let 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 + get swellPeriod(): number { + 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 { + 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 + get seaState(): number { + 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 + get waterTemperature(): number { + let 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 + 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 { + let 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 + get ice(): number { + let val = this._bitField.getInt(348, 2, true); + if (val >= 3) { + return NaN; + } else { + return val; + } + } +} 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/Ais08MsgDac367Fid23.js b/src/Ais08MsgDac367Fid23.js new file mode 100644 index 0000000..8351e0c --- /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) * 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) * 10; + } + + // |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/Ais08MsgDac367Fid24.js b/src/Ais08MsgDac367Fid24.js new file mode 100644 index 0000000..579abd7 --- /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) * 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) * 10; + } + + // |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/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/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..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 @@ -22,14 +23,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 +40,620 @@ 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', + 'msgLinkageId': 'number', + 'retransmitted': 'boolean', + 'destinationMMSI': 'number', + 'sequence': 'number', + 'version': 'number', + 'altitude': 'm', + 'altitudeStatus': 'string', + 'altitudeSensor': 'number', + 'dte': 'boolean', + 'assignedMode': 'boolean', + 'raim': 'boolean' +} 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 +661,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 +770,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 +955,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 +970,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'; } diff --git a/src/AisParser.js b/src/AisParser.js index 9b8b0d4..810e2d9 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-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 @@ -22,8 +23,15 @@ 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'; import Ais08MsgDac200Fid10 from './Ais08MsgDac200Fid10'; +import Ais08MsgDac1Fid21 from './Ais08MsgDac1Fid21'; +import Ais08MsgDac1Fid29 from './Ais08MsgDac1Fid29'; +import Ais08MsgDac1Fid30 from './Ais08MsgDac1Fid30'; +import Ais08MsgDac1Fid31 from './Ais08MsgDac1Fid31'; import Ais14Msg from './Ais14Msg'; import Ais18Msg from './Ais18Msg'; import Ais19Msg from './Ais19Msg'; @@ -36,150 +44,175 @@ 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 +const DEBUG = false; +const VALID_STARTS = [ + '!AIVDO', '!AIVDM', '!ANVDM', '!ABVDM', '!ANVDO', + '!BSVDM', '!B2VDM', '!B1VDM', '!BSVDO' +]; + 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 (!VALID_STARTS.some(prefix => sentence.startsWith(prefix))) { 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 (!VALID_STARTS.includes(part[0])) { + 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 9: + return new Ais09Msg(aisType, bitField, part[4]); case 8: - let sentence = new Ais08Msg(aisType,bitField,part[4]); + 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]); + 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) { + return new Ais08MsgDac1Fid29(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]); + 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 +220,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); } } } diff --git a/src/__tests__/AisParserTest.js b/src/__tests__/AisParserTest.js index 45782f0..2d0f645 100644 --- a/src/__tests__/AisParserTest.js +++ b/src/__tests__/AisParserTest.js @@ -14,7 +14,14 @@ 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) + if (msg.valid != 'VALID') + continue; 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..499023a 100644 --- a/src/__tests__/testHelper/AisBitfieldDataGenerator.js +++ b/src/__tests__/testHelper/AisBitfieldDataGenerator.js @@ -23,20 +23,54 @@ 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' + }, { + 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' + }, { + aisStr: '!AIVDM,2,2,7,A,se7p,0*40', + channel: 'A', + aisType: 8, + valid: 'INVALID' + }, { + aisStr: '!AIVDM,1,1,,A,85N7GVQKmi=r6?n1@d`dEeP`10iT,0*48', + channel: 'A', + aisType: 8, + valid: 'VALID' + } ] /* @@ -150,7 +184,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 +199,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 +219,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 +248,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 +266,5 @@ module.exports = { createStringTestData: createStringTestData, createInvalidStringTestData: createInvalidStringTestData, createIntTestData: createIntTestData, - getRealAisData : getRealAisData + getRealAisData: getRealAisData } \ No newline at end of file