From 8d83c4f6a5e6da6057b4c94d348cfc715122276e Mon Sep 17 00:00:00 2001 From: Jack Lavigne Date: Thu, 3 Apr 2025 20:43:39 +0200 Subject: [PATCH 01/37] refactor: clean up repo a bit - `examples` -> `example` - remove all root level js-related files for now before putting bun in - remove scripts - remove `src/test` (for now) --- .dockerignore | 4 - .eslintrc | 43 - .gitignore | 7 +- .prettierignore | 8 - .prettierrc | 10 - env.d.ts | 9 - ...NavigationDataInterfaceAircraftProject.xml | 0 ...craft-navigation-data-interface-sample.xml | 0 .../Business.json | 0 .../ContentInfo/Thumbnail.jpg | Bin .../PackageSources/Data/Roboto-Regular.ttf | Bin .../PackageSources/NavigationData/cycle.json | 0 .../PackageSources/NavigationData/db.s3db | Bin .../Approach.flt | 0 .../Climb.flt | 0 .../Cruise.flt | 0 .../Final.flt | 0 .../ai.cfg | 0 .../aircraft.cfg | 0 .../apron.flt | 0 .../cameras.cfg | 0 .../cockpit.cfg | 0 .../engines.cfg | 0 .../flight_model.cfg | 0 .../gameplay.cfg | 0 .../hangar.flt | 0 .../model.01/model.cfg | 0 .../model.02/model.cfg | 0 .../model/GaugeAircraft.xml | 0 .../model/GaugeAircraft_Interior.xml | 0 .../model/GaugeAircraft_Interior_LOD00.bin | Bin .../model/GaugeAircraft_Interior_LOD00.gltf | 0 .../model/GaugeAircraft_Interior_LOD01.bin | Bin .../model/GaugeAircraft_Interior_LOD01.gltf | 0 .../model/GaugeAircraft_Interior_LOD02.bin | Bin .../model/GaugeAircraft_Interior_LOD02.gltf | 0 .../model/GaugeAircraft_Interior_LOD03.bin | Bin .../model/GaugeAircraft_Interior_LOD03.gltf | 0 .../model/GaugeAircraft_Interior_LOD04.bin | Bin .../model/GaugeAircraft_Interior_LOD04.gltf | 0 .../model/GaugeAircraft_LOD00.bin | Bin .../model/GaugeAircraft_LOD00.gltf | 0 .../model/GaugeAircraft_LOD01.bin | Bin .../model/GaugeAircraft_LOD01.gltf | 0 .../model/GaugeAircraft_LOD02.bin | Bin .../model/GaugeAircraft_LOD02.gltf | 0 .../model/GaugeAircraft_LOD03.bin | Bin .../model/GaugeAircraft_LOD03.gltf | 0 .../model/GaugeAircraft_LOD04.bin | Bin .../model/GaugeAircraft_LOD04.gltf | 0 .../model/model.cfg | 0 .../panel/panel.cfg | 0 .../runway.FLT | 0 .../sound/MyCompany_Gauge_Aircraft.PC.PCK | Bin .../sound/sound.xml | 0 .../MyCompany_Gauge_Aircraft_AI.PC.PCK | Bin .../soundAI/soundai.xml | 0 .../systems.cfg | 0 .../taxi.flt | 0 .../GaugeAircraft_FUSELAGE_albd_000.png | Bin .../GaugeAircraft_WINGS_albd_000.png | Bin .../texture.01/texture.cfg | 0 .../GaugeAircraft_FUSELAGE_albd_000.png | Bin .../GaugeAircraft_WINGS_albd_000.png | Bin .../texture.02/texture.cfg | 0 .../texture.02/thumbnail.jpg | Bin .../texture.02/thumbnail_small.jpg | Bin .../texture.base/Pilot_ARMS_albd.png | Bin .../texture.base/Pilot_ARMS_comp.png | Bin .../texture.base/Pilot_ARMS_norm.png | Bin .../texture.base/Pilot_CAP_albd.png | Bin .../texture.base/Pilot_CAP_comp.png | Bin .../texture.base/Pilot_CAP_norm.png | Bin .../texture.base/Pilot_EYES_albd.png | Bin .../texture.base/Pilot_EYES_comp.png | Bin .../texture.base/Pilot_EYES_norm.png | Bin .../texture.base/Pilot_HAIRCARDS_albd.png | Bin .../texture.base/Pilot_HAIRCARDS_comp.png | Bin .../texture.base/Pilot_HAIRCARDS_norm.png | Bin .../texture.base/Pilot_HEADSET_albd.png | Bin .../texture.base/Pilot_HEADSET_comp.png | Bin .../texture.base/Pilot_HEADSET_norm.png | Bin .../texture.base/Pilot_HEAD_albd.png | Bin .../texture.base/Pilot_HEAD_comp.png | Bin .../texture.base/Pilot_HEAD_norm.png | Bin .../texture.base/Pilot_JACKET_albd.png | Bin .../texture.base/Pilot_JACKET_comp.png | Bin .../texture.base/Pilot_JACKET_norm.png | Bin .../texture.base/Pilot_PANTS_albd.png | Bin .../texture.base/Pilot_PANTS_comp.png | Bin .../texture.base/Pilot_PANTS_norm.png | Bin .../texture.base/Pilot_SHOES_albd.png | Bin .../texture.base/Pilot_SHOES_comp.png | Bin .../texture.base/Pilot_SHOES_norm.png | Bin .../texture/GaugeAircraft_COCKPIT_albd.png | Bin .../texture/GaugeAircraft_COCKPIT_comp.png | Bin .../texture/GaugeAircraft_COCKPIT_norm.png | Bin .../GaugeAircraft_FUSELAGE_albd_000.png | Bin .../texture/GaugeAircraft_FUSELAGE_comp.png | Bin .../texture/GaugeAircraft_FUSELAGE_norm.png | Bin .../texture/GaugeAircraft_GLASS_albd.png | Bin .../texture/GaugeAircraft_GLASS_comp.png | Bin .../texture/GaugeAircraft_GLASS_norm.png | Bin .../texture/GaugeAircraft_LANDING_albd.png | Bin .../texture/GaugeAircraft_LANDING_comp.png | Bin .../texture/GaugeAircraft_LANDING_norm.png | Bin .../texture/GaugeAircraft_LIGHTS_albd.png | Bin .../texture/GaugeAircraft_LIGHTS_comp.png | Bin .../texture/GaugeAircraft_LIGHTS_emis.png | Bin .../texture/GaugeAircraft_LIGHTS_norm.png | Bin .../texture/GaugeAircraft_PROP_albd.png | Bin .../texture/GaugeAircraft_PROP_comp.png | Bin .../texture/GaugeAircraft_PROP_norm.png | Bin .../texture/GaugeAircraft_WINGS_albd_000.png | Bin .../texture/GaugeAircraft_WINGS_comp.png | Bin .../texture/GaugeAircraft_WINGS_norm.png | Bin .../texture/texture.cfg | 0 ...raft-navigation-data-interface-sample.json | 0 {examples => example}/gauge/.env.example | 0 {examples => example}/gauge/.eslintrc.js | 0 .../gauge/Components/Dropdown.css | 0 .../gauge/Components/Dropdown.tsx | 0 .../gauge/Components/Input.tsx | 0 .../gauge/Components/InterfaceSample.css | 0 .../gauge/Components/InterfaceSample.tsx | 0 .../gauge/Components/List.tsx | 0 .../gauge/Components/Pages/Auth/Auth.tsx | 0 .../Components/Pages/Dashboard/Dashboard.tsx | 0 .../gauge/Components/Pages/Test/Test.tsx | 0 .../gauge/Components/Utils.tsx | 0 {examples => example}/gauge/Lib/navigraph.ts | 0 {examples => example}/gauge/MyInstrument.css | 0 {examples => example}/gauge/MyInstrument.html | 0 {examples => example}/gauge/MyInstrument.tsx | 0 {examples => example}/gauge/README.md | 0 .../gauge/Services/AuthService.ts | 0 {examples => example}/gauge/env.d.ts | 0 {examples => example}/gauge/global.d.ts | 0 {examples => example}/gauge/msfssdk.d.ts | 0 {examples => example}/gauge/package.json | 0 {examples => example}/gauge/postcss.config.js | 0 {examples => example}/gauge/rollup.config.js | 0 .../gauge/tailwind.config.js | 0 {examples => example}/gauge/tsconfig.json | 0 jest.config.ts | 11 - package-lock.json | 10136 ---------------- package.json | 41 - scripts/build.bat | 7 - scripts/build.sh | 19 - scripts/run_cargo_cmd.bat | 9 - scripts/run_docker_cmd.bat | 7 - scripts/run_docker_cmd.sh | 9 - scripts/setup.bat | 3 - scripts/test.bat | 9 - scripts/workflow.sh | 10 - src/test/constants.ts | 2 - src/test/index.spec.ts | 490 - src/test/randomBigint.ts | 51 - src/test/setup.ts | 312 - 159 files changed, 2 insertions(+), 11195 deletions(-) delete mode 100644 .dockerignore delete mode 100644 .eslintrc delete mode 100644 .prettierignore delete mode 100644 .prettierrc delete mode 100644 env.d.ts rename {examples => example}/aircraft/NavigationDataInterfaceAircraftProject.xml (100%) rename {examples => example}/aircraft/PackageDefinitions/navigraph-aircraft-navigation-data-interface-sample.xml (100%) rename {examples => example}/aircraft/PackageDefinitions/navigraph-aircraft-navigation-data-interface-sample/Business.json (100%) rename {examples => example}/aircraft/PackageDefinitions/navigraph-aircraft-navigation-data-interface-sample/ContentInfo/Thumbnail.jpg (100%) rename {examples => example}/aircraft/PackageSources/Data/Roboto-Regular.ttf (100%) rename {examples => example}/aircraft/PackageSources/NavigationData/cycle.json (100%) rename {examples => example}/aircraft/PackageSources/NavigationData/db.s3db (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/Approach.flt (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/Climb.flt (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/Cruise.flt (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/Final.flt (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/ai.cfg (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/aircraft.cfg (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/apron.flt (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/cameras.cfg (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/cockpit.cfg (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/engines.cfg (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/flight_model.cfg (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/gameplay.cfg (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/hangar.flt (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model.01/model.cfg (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model.02/model.cfg (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft.xml (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior.xml (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD00.bin (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD00.gltf (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD01.bin (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD01.gltf (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD02.bin (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD02.gltf (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD03.bin (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD03.gltf (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD04.bin (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD04.gltf (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD00.bin (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD00.gltf (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD01.bin (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD01.gltf (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD02.bin (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD02.gltf (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD03.bin (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD03.gltf (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD04.bin (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD04.gltf (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/model.cfg (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/panel/panel.cfg (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/runway.FLT (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/sound/MyCompany_Gauge_Aircraft.PC.PCK (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/sound/sound.xml (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/soundAI/MyCompany_Gauge_Aircraft_AI.PC.PCK (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/soundAI/soundai.xml (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/systems.cfg (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/taxi.flt (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.01/GaugeAircraft_FUSELAGE_albd_000.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.01/GaugeAircraft_WINGS_albd_000.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.01/texture.cfg (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.02/GaugeAircraft_FUSELAGE_albd_000.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.02/GaugeAircraft_WINGS_albd_000.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.02/texture.cfg (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.02/thumbnail.jpg (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.02/thumbnail_small.jpg (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_ARMS_albd.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_ARMS_comp.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_ARMS_norm.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_CAP_albd.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_CAP_comp.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_CAP_norm.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_EYES_albd.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_EYES_comp.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_EYES_norm.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HAIRCARDS_albd.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HAIRCARDS_comp.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HAIRCARDS_norm.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEADSET_albd.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEADSET_comp.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEADSET_norm.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEAD_albd.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEAD_comp.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEAD_norm.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_JACKET_albd.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_JACKET_comp.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_JACKET_norm.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_PANTS_albd.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_PANTS_comp.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_PANTS_norm.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_SHOES_albd.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_SHOES_comp.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_SHOES_norm.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_COCKPIT_albd.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_COCKPIT_comp.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_COCKPIT_norm.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_FUSELAGE_albd_000.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_FUSELAGE_comp.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_FUSELAGE_norm.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_GLASS_albd.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_GLASS_comp.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_GLASS_norm.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LANDING_albd.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LANDING_comp.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LANDING_norm.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LIGHTS_albd.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LIGHTS_comp.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LIGHTS_emis.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LIGHTS_norm.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_PROP_albd.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_PROP_comp.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_PROP_norm.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_WINGS_albd_000.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_WINGS_comp.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_WINGS_norm.png (100%) rename {examples => example}/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/texture.cfg (100%) rename {examples => example}/aircraft/PackagesMetadata/navigraph-aircraft-navigation-data-interface-sample/navigraph-aircraft-navigation-data-interface-sample.json (100%) rename {examples => example}/gauge/.env.example (100%) rename {examples => example}/gauge/.eslintrc.js (100%) rename {examples => example}/gauge/Components/Dropdown.css (100%) rename {examples => example}/gauge/Components/Dropdown.tsx (100%) rename {examples => example}/gauge/Components/Input.tsx (100%) rename {examples => example}/gauge/Components/InterfaceSample.css (100%) rename {examples => example}/gauge/Components/InterfaceSample.tsx (100%) rename {examples => example}/gauge/Components/List.tsx (100%) rename {examples => example}/gauge/Components/Pages/Auth/Auth.tsx (100%) rename {examples => example}/gauge/Components/Pages/Dashboard/Dashboard.tsx (100%) rename {examples => example}/gauge/Components/Pages/Test/Test.tsx (100%) rename {examples => example}/gauge/Components/Utils.tsx (100%) rename {examples => example}/gauge/Lib/navigraph.ts (100%) rename {examples => example}/gauge/MyInstrument.css (100%) rename {examples => example}/gauge/MyInstrument.html (100%) rename {examples => example}/gauge/MyInstrument.tsx (100%) rename {examples => example}/gauge/README.md (100%) rename {examples => example}/gauge/Services/AuthService.ts (100%) rename {examples => example}/gauge/env.d.ts (100%) rename {examples => example}/gauge/global.d.ts (100%) rename {examples => example}/gauge/msfssdk.d.ts (100%) rename {examples => example}/gauge/package.json (100%) rename {examples => example}/gauge/postcss.config.js (100%) rename {examples => example}/gauge/rollup.config.js (100%) rename {examples => example}/gauge/tailwind.config.js (100%) rename {examples => example}/gauge/tsconfig.json (100%) delete mode 100644 jest.config.ts delete mode 100644 package-lock.json delete mode 100644 package.json delete mode 100644 scripts/build.bat delete mode 100755 scripts/build.sh delete mode 100644 scripts/run_cargo_cmd.bat delete mode 100644 scripts/run_docker_cmd.bat delete mode 100755 scripts/run_docker_cmd.sh delete mode 100644 scripts/setup.bat delete mode 100644 scripts/test.bat delete mode 100755 scripts/workflow.sh delete mode 100644 src/test/constants.ts delete mode 100644 src/test/index.spec.ts delete mode 100644 src/test/randomBigint.ts delete mode 100644 src/test/setup.ts diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index 2cddc9ca..00000000 --- a/.dockerignore +++ /dev/null @@ -1,4 +0,0 @@ -target -out -node_modules -test_work \ No newline at end of file diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index ad81f7cc..00000000 --- a/.eslintrc +++ /dev/null @@ -1,43 +0,0 @@ -{ - "root": true, - "ignorePatterns": [".eslintrc.js", "src/wasm/", "msfstypes/"], - "env": { "browser": true, "commonjs": true, "es6": true }, - "plugins": ["@typescript-eslint"], - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:@typescript-eslint/recommended-requiring-type-checking", - "plugin:prettier/recommended" - ], - "rules": { - "no-console": ["warn", { "allow": ["warn", "error", "time", "timeEnd", "info"] }], - "@typescript-eslint/func-call-spacing": ["warn"], - "@typescript-eslint/no-shadow": "warn", - "@typescript-eslint/ban-ts-comment": ["error", { "ts-ignore": "allow-with-description" }], - "@typescript-eslint/explicit-module-boundary-types": "off", - "@typescript-eslint/no-empty-function": ["error", { "allow": ["arrowFunctions"] }], - "@typescript-eslint/no-explicit-any": "error", - "no-unused-vars": "off", - "@typescript-eslint/no-unused-vars": [ - "warn", - { - "vars": "all", - "varsIgnorePattern": "^_", - "args": "after-used", - "argsIgnorePattern": "^_", - "ignoreRestSiblings": true, - "destructuredArrayIgnorePattern": "^_" - } - ], - "@typescript-eslint/no-misused-promises": [ - "warn", - { - "checksConditionals": true, - "checksVoidReturn": false, - "checksSpreads": true - } - ], - "@typescript-eslint/interface-name-prefix": "off", - "@typescript-eslint/explicit-function-return-type": "off" - } -} diff --git a/.gitignore b/.gitignore index ad130924..23c8ec40 100644 --- a/.gitignore +++ b/.gitignore @@ -4,11 +4,8 @@ _PackageInt .rollup.cache tsconfig.tsbuildinfo .vs -examples/aircraft/PackageSources/html_ui/Pages/VCockpit/Instruments/Navigraph/NavigationDataInterfaceSample -examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/panel/msfs_navigation_data_interface.wasm -out -out20 -out24 +example/aircraft/PackageSources/html_ui/Pages/VCockpit/Instruments/Navigraph/NavigationDataInterfaceSample +example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/panel/msfs_navigation_data_interface.wasm # Rust # will have compiled files and executables diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 900bb784..00000000 --- a/.prettierignore +++ /dev/null @@ -1,8 +0,0 @@ -# Rollup -.rollup.cache - -package-lock.json - -*.gltf -*.json -*.yml diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 46ac1bd5..00000000 --- a/.prettierrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "trailingComma": "all", - "printWidth": 120, - "singleQuote": false, - "arrowParens": "avoid", - "semi": false, - "endOfLine": "auto", - "plugins": ["@ianvs/prettier-plugin-sort-imports"], - "importOrder": ["", "@[A-Z](.*)", "^[./]"] -} diff --git a/env.d.ts b/env.d.ts deleted file mode 100644 index e0587a4e..00000000 --- a/env.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -// Add secret to global env - -declare namespace NodeJS { - interface ProcessEnv { - // For test running - // Must be a client which supports password auth grants - NAVIGATION_DATA_SIGNED_URL: string - } -} diff --git a/examples/aircraft/NavigationDataInterfaceAircraftProject.xml b/example/aircraft/NavigationDataInterfaceAircraftProject.xml similarity index 100% rename from examples/aircraft/NavigationDataInterfaceAircraftProject.xml rename to example/aircraft/NavigationDataInterfaceAircraftProject.xml diff --git a/examples/aircraft/PackageDefinitions/navigraph-aircraft-navigation-data-interface-sample.xml b/example/aircraft/PackageDefinitions/navigraph-aircraft-navigation-data-interface-sample.xml similarity index 100% rename from examples/aircraft/PackageDefinitions/navigraph-aircraft-navigation-data-interface-sample.xml rename to example/aircraft/PackageDefinitions/navigraph-aircraft-navigation-data-interface-sample.xml diff --git a/examples/aircraft/PackageDefinitions/navigraph-aircraft-navigation-data-interface-sample/Business.json b/example/aircraft/PackageDefinitions/navigraph-aircraft-navigation-data-interface-sample/Business.json similarity index 100% rename from examples/aircraft/PackageDefinitions/navigraph-aircraft-navigation-data-interface-sample/Business.json rename to example/aircraft/PackageDefinitions/navigraph-aircraft-navigation-data-interface-sample/Business.json diff --git a/examples/aircraft/PackageDefinitions/navigraph-aircraft-navigation-data-interface-sample/ContentInfo/Thumbnail.jpg b/example/aircraft/PackageDefinitions/navigraph-aircraft-navigation-data-interface-sample/ContentInfo/Thumbnail.jpg similarity index 100% rename from examples/aircraft/PackageDefinitions/navigraph-aircraft-navigation-data-interface-sample/ContentInfo/Thumbnail.jpg rename to example/aircraft/PackageDefinitions/navigraph-aircraft-navigation-data-interface-sample/ContentInfo/Thumbnail.jpg diff --git a/examples/aircraft/PackageSources/Data/Roboto-Regular.ttf b/example/aircraft/PackageSources/Data/Roboto-Regular.ttf similarity index 100% rename from examples/aircraft/PackageSources/Data/Roboto-Regular.ttf rename to example/aircraft/PackageSources/Data/Roboto-Regular.ttf diff --git a/examples/aircraft/PackageSources/NavigationData/cycle.json b/example/aircraft/PackageSources/NavigationData/cycle.json similarity index 100% rename from examples/aircraft/PackageSources/NavigationData/cycle.json rename to example/aircraft/PackageSources/NavigationData/cycle.json diff --git a/examples/aircraft/PackageSources/NavigationData/db.s3db b/example/aircraft/PackageSources/NavigationData/db.s3db similarity index 100% rename from examples/aircraft/PackageSources/NavigationData/db.s3db rename to example/aircraft/PackageSources/NavigationData/db.s3db diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/Approach.flt b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/Approach.flt similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/Approach.flt rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/Approach.flt diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/Climb.flt b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/Climb.flt similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/Climb.flt rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/Climb.flt diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/Cruise.flt b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/Cruise.flt similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/Cruise.flt rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/Cruise.flt diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/Final.flt b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/Final.flt similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/Final.flt rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/Final.flt diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/ai.cfg b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/ai.cfg similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/ai.cfg rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/ai.cfg diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/aircraft.cfg b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/aircraft.cfg similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/aircraft.cfg rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/aircraft.cfg diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/apron.flt b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/apron.flt similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/apron.flt rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/apron.flt diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/cameras.cfg b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/cameras.cfg similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/cameras.cfg rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/cameras.cfg diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/cockpit.cfg b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/cockpit.cfg similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/cockpit.cfg rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/cockpit.cfg diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/engines.cfg b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/engines.cfg similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/engines.cfg rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/engines.cfg diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/flight_model.cfg b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/flight_model.cfg similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/flight_model.cfg rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/flight_model.cfg diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/gameplay.cfg b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/gameplay.cfg similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/gameplay.cfg rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/gameplay.cfg diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/hangar.flt b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/hangar.flt similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/hangar.flt rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/hangar.flt diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model.01/model.cfg b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model.01/model.cfg similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model.01/model.cfg rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model.01/model.cfg diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model.02/model.cfg b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model.02/model.cfg similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model.02/model.cfg rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model.02/model.cfg diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft.xml b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft.xml similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft.xml rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft.xml diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior.xml b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior.xml similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior.xml rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior.xml diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD00.bin b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD00.bin similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD00.bin rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD00.bin diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD00.gltf b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD00.gltf similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD00.gltf rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD00.gltf diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD01.bin b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD01.bin similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD01.bin rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD01.bin diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD01.gltf b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD01.gltf similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD01.gltf rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD01.gltf diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD02.bin b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD02.bin similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD02.bin rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD02.bin diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD02.gltf b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD02.gltf similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD02.gltf rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD02.gltf diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD03.bin b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD03.bin similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD03.bin rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD03.bin diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD03.gltf b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD03.gltf similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD03.gltf rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD03.gltf diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD04.bin b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD04.bin similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD04.bin rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD04.bin diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD04.gltf b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD04.gltf similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD04.gltf rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_Interior_LOD04.gltf diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD00.bin b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD00.bin similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD00.bin rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD00.bin diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD00.gltf b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD00.gltf similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD00.gltf rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD00.gltf diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD01.bin b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD01.bin similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD01.bin rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD01.bin diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD01.gltf b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD01.gltf similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD01.gltf rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD01.gltf diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD02.bin b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD02.bin similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD02.bin rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD02.bin diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD02.gltf b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD02.gltf similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD02.gltf rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD02.gltf diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD03.bin b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD03.bin similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD03.bin rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD03.bin diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD03.gltf b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD03.gltf similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD03.gltf rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD03.gltf diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD04.bin b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD04.bin similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD04.bin rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD04.bin diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD04.gltf b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD04.gltf similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD04.gltf rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/GaugeAircraft_LOD04.gltf diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/model.cfg b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/model.cfg similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/model.cfg rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/model/model.cfg diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/panel/panel.cfg b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/panel/panel.cfg similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/panel/panel.cfg rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/panel/panel.cfg diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/runway.FLT b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/runway.FLT similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/runway.FLT rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/runway.FLT diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/sound/MyCompany_Gauge_Aircraft.PC.PCK b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/sound/MyCompany_Gauge_Aircraft.PC.PCK similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/sound/MyCompany_Gauge_Aircraft.PC.PCK rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/sound/MyCompany_Gauge_Aircraft.PC.PCK diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/sound/sound.xml b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/sound/sound.xml similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/sound/sound.xml rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/sound/sound.xml diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/soundAI/MyCompany_Gauge_Aircraft_AI.PC.PCK b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/soundAI/MyCompany_Gauge_Aircraft_AI.PC.PCK similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/soundAI/MyCompany_Gauge_Aircraft_AI.PC.PCK rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/soundAI/MyCompany_Gauge_Aircraft_AI.PC.PCK diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/soundAI/soundai.xml b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/soundAI/soundai.xml similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/soundAI/soundai.xml rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/soundAI/soundai.xml diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/systems.cfg b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/systems.cfg similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/systems.cfg rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/systems.cfg diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/taxi.flt b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/taxi.flt similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/taxi.flt rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/taxi.flt diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.01/GaugeAircraft_FUSELAGE_albd_000.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.01/GaugeAircraft_FUSELAGE_albd_000.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.01/GaugeAircraft_FUSELAGE_albd_000.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.01/GaugeAircraft_FUSELAGE_albd_000.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.01/GaugeAircraft_WINGS_albd_000.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.01/GaugeAircraft_WINGS_albd_000.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.01/GaugeAircraft_WINGS_albd_000.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.01/GaugeAircraft_WINGS_albd_000.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.01/texture.cfg b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.01/texture.cfg similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.01/texture.cfg rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.01/texture.cfg diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.02/GaugeAircraft_FUSELAGE_albd_000.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.02/GaugeAircraft_FUSELAGE_albd_000.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.02/GaugeAircraft_FUSELAGE_albd_000.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.02/GaugeAircraft_FUSELAGE_albd_000.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.02/GaugeAircraft_WINGS_albd_000.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.02/GaugeAircraft_WINGS_albd_000.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.02/GaugeAircraft_WINGS_albd_000.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.02/GaugeAircraft_WINGS_albd_000.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.02/texture.cfg b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.02/texture.cfg similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.02/texture.cfg rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.02/texture.cfg diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.02/thumbnail.jpg b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.02/thumbnail.jpg similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.02/thumbnail.jpg rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.02/thumbnail.jpg diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.02/thumbnail_small.jpg b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.02/thumbnail_small.jpg similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.02/thumbnail_small.jpg rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.02/thumbnail_small.jpg diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_ARMS_albd.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_ARMS_albd.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_ARMS_albd.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_ARMS_albd.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_ARMS_comp.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_ARMS_comp.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_ARMS_comp.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_ARMS_comp.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_ARMS_norm.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_ARMS_norm.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_ARMS_norm.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_ARMS_norm.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_CAP_albd.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_CAP_albd.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_CAP_albd.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_CAP_albd.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_CAP_comp.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_CAP_comp.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_CAP_comp.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_CAP_comp.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_CAP_norm.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_CAP_norm.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_CAP_norm.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_CAP_norm.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_EYES_albd.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_EYES_albd.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_EYES_albd.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_EYES_albd.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_EYES_comp.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_EYES_comp.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_EYES_comp.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_EYES_comp.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_EYES_norm.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_EYES_norm.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_EYES_norm.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_EYES_norm.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HAIRCARDS_albd.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HAIRCARDS_albd.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HAIRCARDS_albd.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HAIRCARDS_albd.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HAIRCARDS_comp.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HAIRCARDS_comp.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HAIRCARDS_comp.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HAIRCARDS_comp.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HAIRCARDS_norm.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HAIRCARDS_norm.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HAIRCARDS_norm.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HAIRCARDS_norm.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEADSET_albd.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEADSET_albd.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEADSET_albd.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEADSET_albd.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEADSET_comp.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEADSET_comp.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEADSET_comp.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEADSET_comp.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEADSET_norm.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEADSET_norm.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEADSET_norm.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEADSET_norm.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEAD_albd.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEAD_albd.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEAD_albd.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEAD_albd.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEAD_comp.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEAD_comp.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEAD_comp.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEAD_comp.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEAD_norm.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEAD_norm.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEAD_norm.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_HEAD_norm.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_JACKET_albd.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_JACKET_albd.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_JACKET_albd.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_JACKET_albd.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_JACKET_comp.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_JACKET_comp.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_JACKET_comp.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_JACKET_comp.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_JACKET_norm.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_JACKET_norm.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_JACKET_norm.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_JACKET_norm.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_PANTS_albd.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_PANTS_albd.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_PANTS_albd.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_PANTS_albd.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_PANTS_comp.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_PANTS_comp.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_PANTS_comp.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_PANTS_comp.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_PANTS_norm.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_PANTS_norm.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_PANTS_norm.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_PANTS_norm.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_SHOES_albd.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_SHOES_albd.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_SHOES_albd.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_SHOES_albd.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_SHOES_comp.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_SHOES_comp.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_SHOES_comp.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_SHOES_comp.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_SHOES_norm.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_SHOES_norm.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_SHOES_norm.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture.base/Pilot_SHOES_norm.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_COCKPIT_albd.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_COCKPIT_albd.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_COCKPIT_albd.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_COCKPIT_albd.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_COCKPIT_comp.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_COCKPIT_comp.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_COCKPIT_comp.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_COCKPIT_comp.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_COCKPIT_norm.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_COCKPIT_norm.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_COCKPIT_norm.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_COCKPIT_norm.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_FUSELAGE_albd_000.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_FUSELAGE_albd_000.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_FUSELAGE_albd_000.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_FUSELAGE_albd_000.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_FUSELAGE_comp.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_FUSELAGE_comp.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_FUSELAGE_comp.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_FUSELAGE_comp.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_FUSELAGE_norm.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_FUSELAGE_norm.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_FUSELAGE_norm.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_FUSELAGE_norm.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_GLASS_albd.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_GLASS_albd.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_GLASS_albd.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_GLASS_albd.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_GLASS_comp.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_GLASS_comp.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_GLASS_comp.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_GLASS_comp.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_GLASS_norm.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_GLASS_norm.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_GLASS_norm.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_GLASS_norm.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LANDING_albd.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LANDING_albd.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LANDING_albd.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LANDING_albd.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LANDING_comp.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LANDING_comp.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LANDING_comp.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LANDING_comp.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LANDING_norm.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LANDING_norm.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LANDING_norm.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LANDING_norm.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LIGHTS_albd.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LIGHTS_albd.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LIGHTS_albd.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LIGHTS_albd.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LIGHTS_comp.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LIGHTS_comp.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LIGHTS_comp.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LIGHTS_comp.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LIGHTS_emis.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LIGHTS_emis.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LIGHTS_emis.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LIGHTS_emis.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LIGHTS_norm.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LIGHTS_norm.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LIGHTS_norm.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_LIGHTS_norm.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_PROP_albd.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_PROP_albd.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_PROP_albd.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_PROP_albd.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_PROP_comp.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_PROP_comp.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_PROP_comp.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_PROP_comp.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_PROP_norm.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_PROP_norm.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_PROP_norm.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_PROP_norm.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_WINGS_albd_000.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_WINGS_albd_000.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_WINGS_albd_000.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_WINGS_albd_000.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_WINGS_comp.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_WINGS_comp.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_WINGS_comp.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_WINGS_comp.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_WINGS_norm.png b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_WINGS_norm.png similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_WINGS_norm.png rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/GaugeAircraft_WINGS_norm.png diff --git a/examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/texture.cfg b/example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/texture.cfg similarity index 100% rename from examples/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/texture.cfg rename to example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_Interface_Aircraft/texture/texture.cfg diff --git a/examples/aircraft/PackagesMetadata/navigraph-aircraft-navigation-data-interface-sample/navigraph-aircraft-navigation-data-interface-sample.json b/example/aircraft/PackagesMetadata/navigraph-aircraft-navigation-data-interface-sample/navigraph-aircraft-navigation-data-interface-sample.json similarity index 100% rename from examples/aircraft/PackagesMetadata/navigraph-aircraft-navigation-data-interface-sample/navigraph-aircraft-navigation-data-interface-sample.json rename to example/aircraft/PackagesMetadata/navigraph-aircraft-navigation-data-interface-sample/navigraph-aircraft-navigation-data-interface-sample.json diff --git a/examples/gauge/.env.example b/example/gauge/.env.example similarity index 100% rename from examples/gauge/.env.example rename to example/gauge/.env.example diff --git a/examples/gauge/.eslintrc.js b/example/gauge/.eslintrc.js similarity index 100% rename from examples/gauge/.eslintrc.js rename to example/gauge/.eslintrc.js diff --git a/examples/gauge/Components/Dropdown.css b/example/gauge/Components/Dropdown.css similarity index 100% rename from examples/gauge/Components/Dropdown.css rename to example/gauge/Components/Dropdown.css diff --git a/examples/gauge/Components/Dropdown.tsx b/example/gauge/Components/Dropdown.tsx similarity index 100% rename from examples/gauge/Components/Dropdown.tsx rename to example/gauge/Components/Dropdown.tsx diff --git a/examples/gauge/Components/Input.tsx b/example/gauge/Components/Input.tsx similarity index 100% rename from examples/gauge/Components/Input.tsx rename to example/gauge/Components/Input.tsx diff --git a/examples/gauge/Components/InterfaceSample.css b/example/gauge/Components/InterfaceSample.css similarity index 100% rename from examples/gauge/Components/InterfaceSample.css rename to example/gauge/Components/InterfaceSample.css diff --git a/examples/gauge/Components/InterfaceSample.tsx b/example/gauge/Components/InterfaceSample.tsx similarity index 100% rename from examples/gauge/Components/InterfaceSample.tsx rename to example/gauge/Components/InterfaceSample.tsx diff --git a/examples/gauge/Components/List.tsx b/example/gauge/Components/List.tsx similarity index 100% rename from examples/gauge/Components/List.tsx rename to example/gauge/Components/List.tsx diff --git a/examples/gauge/Components/Pages/Auth/Auth.tsx b/example/gauge/Components/Pages/Auth/Auth.tsx similarity index 100% rename from examples/gauge/Components/Pages/Auth/Auth.tsx rename to example/gauge/Components/Pages/Auth/Auth.tsx diff --git a/examples/gauge/Components/Pages/Dashboard/Dashboard.tsx b/example/gauge/Components/Pages/Dashboard/Dashboard.tsx similarity index 100% rename from examples/gauge/Components/Pages/Dashboard/Dashboard.tsx rename to example/gauge/Components/Pages/Dashboard/Dashboard.tsx diff --git a/examples/gauge/Components/Pages/Test/Test.tsx b/example/gauge/Components/Pages/Test/Test.tsx similarity index 100% rename from examples/gauge/Components/Pages/Test/Test.tsx rename to example/gauge/Components/Pages/Test/Test.tsx diff --git a/examples/gauge/Components/Utils.tsx b/example/gauge/Components/Utils.tsx similarity index 100% rename from examples/gauge/Components/Utils.tsx rename to example/gauge/Components/Utils.tsx diff --git a/examples/gauge/Lib/navigraph.ts b/example/gauge/Lib/navigraph.ts similarity index 100% rename from examples/gauge/Lib/navigraph.ts rename to example/gauge/Lib/navigraph.ts diff --git a/examples/gauge/MyInstrument.css b/example/gauge/MyInstrument.css similarity index 100% rename from examples/gauge/MyInstrument.css rename to example/gauge/MyInstrument.css diff --git a/examples/gauge/MyInstrument.html b/example/gauge/MyInstrument.html similarity index 100% rename from examples/gauge/MyInstrument.html rename to example/gauge/MyInstrument.html diff --git a/examples/gauge/MyInstrument.tsx b/example/gauge/MyInstrument.tsx similarity index 100% rename from examples/gauge/MyInstrument.tsx rename to example/gauge/MyInstrument.tsx diff --git a/examples/gauge/README.md b/example/gauge/README.md similarity index 100% rename from examples/gauge/README.md rename to example/gauge/README.md diff --git a/examples/gauge/Services/AuthService.ts b/example/gauge/Services/AuthService.ts similarity index 100% rename from examples/gauge/Services/AuthService.ts rename to example/gauge/Services/AuthService.ts diff --git a/examples/gauge/env.d.ts b/example/gauge/env.d.ts similarity index 100% rename from examples/gauge/env.d.ts rename to example/gauge/env.d.ts diff --git a/examples/gauge/global.d.ts b/example/gauge/global.d.ts similarity index 100% rename from examples/gauge/global.d.ts rename to example/gauge/global.d.ts diff --git a/examples/gauge/msfssdk.d.ts b/example/gauge/msfssdk.d.ts similarity index 100% rename from examples/gauge/msfssdk.d.ts rename to example/gauge/msfssdk.d.ts diff --git a/examples/gauge/package.json b/example/gauge/package.json similarity index 100% rename from examples/gauge/package.json rename to example/gauge/package.json diff --git a/examples/gauge/postcss.config.js b/example/gauge/postcss.config.js similarity index 100% rename from examples/gauge/postcss.config.js rename to example/gauge/postcss.config.js diff --git a/examples/gauge/rollup.config.js b/example/gauge/rollup.config.js similarity index 100% rename from examples/gauge/rollup.config.js rename to example/gauge/rollup.config.js diff --git a/examples/gauge/tailwind.config.js b/example/gauge/tailwind.config.js similarity index 100% rename from examples/gauge/tailwind.config.js rename to example/gauge/tailwind.config.js diff --git a/examples/gauge/tsconfig.json b/example/gauge/tsconfig.json similarity index 100% rename from examples/gauge/tsconfig.json rename to example/gauge/tsconfig.json diff --git a/jest.config.ts b/jest.config.ts deleted file mode 100644 index 310eca30..00000000 --- a/jest.config.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { JestConfigWithTsJest } from "ts-jest/dist/types" - -module.exports = { - testEnvironment: "node", - transform: { - "^.+\\.tsx?$": "ts-jest", - }, - testRegex: "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$", - moduleFileExtensions: ["ts", "js", "json", "node"], - setupFilesAfterEnv: ["./src/test/setup.ts"], -} diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 421f0d8f..00000000 --- a/package-lock.json +++ /dev/null @@ -1,10136 +0,0 @@ -{ - "name": "msfs-navigation-data-interface", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "workspaces": [ - "examples/*", - "src/js/*" - ], - "devDependencies": { - "@ianvs/prettier-plugin-sort-imports": "^4.1.1", - "@microsoft/msfs-types": "^1.14.6", - "@types/jest": "^29.5.11", - "@types/node": "^20.10.5", - "@types/uuid": "^9.0.7", - "@typescript-eslint/eslint-plugin": "^6.9.0", - "@typescript-eslint/parser": "^6.9.0", - "dotenv": "^16.3.1", - "eslint": "^8.52.0", - "eslint-config-prettier": "^9.0.0", - "eslint-plugin-prettier": "^5.0.1", - "jest": "^29.7.0", - "prettier": "^3.0.3", - "ts-jest": "^29.1.1", - "ts-node": "^10.9.2", - "tsup": "^8.0.1", - "typescript": "^5.2.2", - "uuid": "^9.0.1" - } - }, - "examples/gauge": { - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "@navigraph/msfs-navigation-data-interface": "*", - "navigraph": "1.2.35" - }, - "devDependencies": { - "@microsoft/msfs-sdk": "^0.6.0", - "@rollup/plugin-node-resolve": "^15.2.3", - "@rollup/plugin-replace": "^5.0.5", - "autoprefixer": "^10.4.20", - "cross-env": "^7.0.3", - "dotenv": "^16.3.1", - "esbuild": "^0.19.5", - "postcss": "^8.4.47", - "rollup": "^2.79.1", - "rollup-plugin-copy": "^3.5.0", - "rollup-plugin-esbuild": "^6.1.0", - "rollup-plugin-import-css": "^3.3.5", - "rollup-plugin-postcss": "^4.0.2", - "tailwindcss": "^3.4.14" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz", - "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.7", - "@babel/parser": "^7.23.6", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.7", - "@babel/types": "^7.23.6", - "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": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.7.tgz", - "integrity": "sha512-6AMnjCoC8wjqBzDHkuqpa7jAKwvMo4dC+lr/TFBz+ucfulO1XMpDnwWPGBNwClOKZ8h6xn5N81W/R5OrcKtCbQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.7", - "@babel/types": "^7.23.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", - "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", - "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", - "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz", - "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.6", - "@babel/types": "^7.23.6", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", - "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz", - "integrity": "sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.11.tgz", - "integrity": "sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz", - "integrity": "sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.11.tgz", - "integrity": "sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz", - "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz", - "integrity": "sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz", - "integrity": "sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz", - "integrity": "sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz", - "integrity": "sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz", - "integrity": "sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz", - "integrity": "sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz", - "integrity": "sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz", - "integrity": "sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz", - "integrity": "sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz", - "integrity": "sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz", - "integrity": "sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz", - "integrity": "sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz", - "integrity": "sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz", - "integrity": "sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz", - "integrity": "sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz", - "integrity": "sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz", - "integrity": "sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz", - "integrity": "sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/eslintrc/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, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", - "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@humanwhocodes/config-array/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, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", - "dev": true - }, - "node_modules/@ianvs/prettier-plugin-sort-imports": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@ianvs/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.1.1.tgz", - "integrity": "sha512-kJhXq63ngpTQ2dxgf5GasbPJWsJA3LgoOdd7WGhpUSzLgLgI4IsIzYkbJf9kmpOHe7Vdm/o3PcRA3jmizXUuAQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.21.8", - "@babel/generator": "^7.21.5", - "@babel/parser": "^7.21.8", - "@babel/traverse": "^7.21.5", - "@babel/types": "^7.21.5", - "semver": "^7.5.2" - }, - "peerDependencies": { - "@vue/compiler-sfc": ">=3.0.0", - "prettier": "2 || 3" - }, - "peerDependenciesMeta": { - "@vue/compiler-sfc": { - "optional": true - } - } - }, - "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, - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "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 - }, - "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, - "dependencies": { - "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/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "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, - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_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, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/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, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@istanbuljs/load-nyc-config/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, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@istanbuljs/load-nyc-config/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, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/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, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@istanbuljs/load-nyc-config/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, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/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, - "engines": { - "node": ">=8" - } - }, - "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, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/console/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/console/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/console/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/console/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 - }, - "node_modules/@jest/console/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/core/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/core/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/core/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/core/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 - }, - "node_modules/@jest/core/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/core/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "dev": true, - "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dev": true, - "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/reporters/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/reporters/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/reporters/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/reporters/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 - }, - "node_modules/@jest/reporters/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/reporters/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/transform/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/transform/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/transform/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 - }, - "node_modules/@jest/transform/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/transform/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/types/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/types/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/types/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 - }, - "node_modules/@jest/types/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/types/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@microsoft/msfs-sdk": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@microsoft/msfs-sdk/-/msfs-sdk-0.6.0.tgz", - "integrity": "sha512-fEOg+IynDit88HDKAZkgEoRIrbrTfIQioNO1Ka42PJ+HdjyYC+4neVvs8ohfJyCi7rLzIwlCe3VcsSnNIGUNig==", - "dev": true - }, - "node_modules/@microsoft/msfs-types": { - "version": "1.14.6", - "resolved": "https://registry.npmjs.org/@microsoft/msfs-types/-/msfs-types-1.14.6.tgz", - "integrity": "sha512-p2dmrxMpnurr7lOFRKjLCysxR6bb+MWJmRvYQkaExq7qBc8bu98WgI14X8W+pf2g0rlH69cN+uP9Kvz/dnPDuw==", - "dev": true - }, - "node_modules/@navigraph/app": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@navigraph/app/-/app-1.3.5.tgz", - "integrity": "sha512-TyfqLvc9AsyXFSaExj0wpo80Qrl/uPYXs1PTx3zVRUSAoGAtsqawtKLC1AFGtfz2EzF/IAeQ3+RMSS24ykFWAA==" - }, - "node_modules/@navigraph/auth": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@navigraph/auth/-/auth-2.5.1.tgz", - "integrity": "sha512-wM0UAlEtEyFT7lZMnLeSjOFt8GfsaJz41JePBVVgCauoRGZYcVxmkKz9IUMQVBgGsdCn5fOillT7LfpDqsUHQg==", - "dependencies": { - "@navigraph/app": "1.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@navigraph/charts": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@navigraph/charts/-/charts-2.0.4.tgz", - "integrity": "sha512-6KK4emnmKwsz8rpJAuo9L1wDbloyfztZKdxBb2Xa2djm0aFjonGAFgbb+04ZEfJ9zPFgXBz6b5apnLOJ/S9RfA==", - "dependencies": { - "@navigraph/app": "1.3.5", - "@navigraph/auth": "2.5.1" - } - }, - "node_modules/@navigraph/msfs-navigation-data-interface": { - "resolved": "src/js", - "link": true - }, - "node_modules/@navigraph/packages": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@navigraph/packages/-/packages-1.0.0.tgz", - "integrity": "sha512-1JHR+BakEAFnIFd5YqMRMlLIu6TWyPVGTuvls0UGk8ylihHdX49EmCj0s2qv19mratjVaEjhiy5LSsNFst3few==", - "dependencies": { - "@navigraph/app": "1.3.5", - "@navigraph/auth": "2.5.1" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "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, - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@pkgr/core": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.0.tgz", - "integrity": "sha512-Zwq5OCzuwJC2jwqmpEQt7Ds1DTi6BWSwoGkbb1n9pO3hzb35BoJELx7c0T23iDkBGkh2e7tvOtjF3tr3OaQHDQ==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "15.2.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz", - "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "@types/resolve": "1.20.2", - "deepmerge": "^4.2.2", - "is-builtin-module": "^3.2.1", - "is-module": "^1.0.0", - "resolve": "^1.22.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.78.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-replace": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.5.tgz", - "integrity": "sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "magic-string": "^0.30.3" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/pluginutils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", - "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", - "dev": true, - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.30.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.30.1.tgz", - "integrity": "sha512-pSWY+EVt3rJ9fQ3IqlrEUtXh3cGqGtPDH1FQlNZehO2yYxCHEX1SPsz1M//NXwYfbTlcKr9WObLnJX9FsS9K1Q==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.30.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.30.1.tgz", - "integrity": "sha512-/NA2qXxE3D/BRjOJM8wQblmArQq1YoBVJjrjoTSBS09jgUisq7bqxNHJ8kjCHeV21W/9WDGwJEWSN0KQ2mtD/w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.30.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.30.1.tgz", - "integrity": "sha512-r7FQIXD7gB0WJ5mokTUgUWPl0eYIH0wnxqeSAhuIwvnnpjdVB8cRRClyKLQr7lgzjctkbp5KmswWszlwYln03Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.30.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.30.1.tgz", - "integrity": "sha512-x78BavIwSH6sqfP2xeI1hd1GpHL8J4W2BXcVM/5KYKoAD3nNsfitQhvWSw+TFtQTLZ9OmlF+FEInEHyubut2OA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.30.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.30.1.tgz", - "integrity": "sha512-HYTlUAjbO1z8ywxsDFWADfTRfTIIy/oUlfIDmlHYmjUP2QRDTzBuWXc9O4CXM+bo9qfiCclmHk1x4ogBjOUpUQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.30.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.30.1.tgz", - "integrity": "sha512-1MEdGqogQLccphhX5myCJqeGNYTNcmTyaic9S7CG3JhwuIByJ7J05vGbZxsizQthP1xpVx7kd3o31eOogfEirw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.30.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.30.1.tgz", - "integrity": "sha512-PaMRNBSqCx7K3Wc9QZkFx5+CX27WFpAMxJNiYGAXfmMIKC7jstlr32UhTgK6T07OtqR+wYlWm9IxzennjnvdJg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.30.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.30.1.tgz", - "integrity": "sha512-B8Rcyj9AV7ZlEFqvB5BubG5iO6ANDsRKlhIxySXcF1axXYUyqwBok+XZPgIYGBgs7LDXfWfifxhw0Ik57T0Yug==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.30.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.30.1.tgz", - "integrity": "sha512-hqVyueGxAj3cBKrAI4aFHLV+h0Lv5VgWZs9CUGqr1z0fZtlADVV1YPOij6AhcK5An33EXaxnDLmJdQikcn5NEw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.30.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.30.1.tgz", - "integrity": "sha512-i4Ab2vnvS1AE1PyOIGp2kXni69gU2DAUVt6FSXeIqUCPIR3ZlheMW3oP2JkukDfu3PsexYRbOiJrY+yVNSk9oA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.30.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.30.1.tgz", - "integrity": "sha512-fARcF5g296snX0oLGkVxPmysetwUk2zmHcca+e9ObOovBR++9ZPOhqFUM61UUZ2EYpXVPN1redgqVoBB34nTpQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.30.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.30.1.tgz", - "integrity": "sha512-GLrZraoO3wVT4uFXh67ElpwQY0DIygxdv0BNW9Hkm3X34wu+BkqrDrkcsIapAY+N2ATEbvak0XQ9gxZtCIA5Rw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.30.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.30.1.tgz", - "integrity": "sha512-0WKLaAUUHKBtll0wvOmh6yh3S0wSU9+yas923JIChfxOaaBarmb/lBKPF0w/+jTVozFnOXJeRGZ8NvOxvk/jcw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.30.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.30.1.tgz", - "integrity": "sha512-GWFs97Ruxo5Bt+cvVTQkOJ6TIx0xJDD/bMAOXWJg8TCSTEK8RnFeOeiFTxKniTc4vMIaWvCplMAFBt9miGxgkA==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.30.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.30.1.tgz", - "integrity": "sha512-UtgGb7QGgXDIO+tqqJ5oZRGHsDLO8SlpE4MhqpY9Llpzi5rJMvrK6ZGhsRCST2abZdBqIBeXW6WPD5fGK5SDwg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.30.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.30.1.tgz", - "integrity": "sha512-V9U8Ey2UqmQsBT+xTOeMzPzwDzyXmnAoO4edZhL7INkwQcaW1Ckv3WJX3qrrp/VHaDkEWIBWhRwP47r8cdrOow==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.30.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.30.1.tgz", - "integrity": "sha512-WabtHWiPaFF47W3PkHnjbmWawnX/aE57K47ZDT1BXTS5GgrBUEpvOzq0FI0V/UYzQJgdb8XlhVNH8/fwV8xDjw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.30.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.30.1.tgz", - "integrity": "sha512-pxHAU+Zv39hLUTdQQHUVHf4P+0C47y/ZloorHpzs2SXMRqeAWmGghzAhfOlzFHHwjvgokdFAhC4V+6kC1lRRfw==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.30.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.30.1.tgz", - "integrity": "sha512-D6qjsXGcvhTjv0kI4fU8tUuBDF/Ueee4SVX79VfNDXZa64TfCW1Slkb6Z7O1p7vflqZjcmOVdZlqf8gvJxc6og==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true - }, - "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, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", - "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/fs-extra": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.5.tgz", - "integrity": "sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dev": true, - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "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 - }, - "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, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "29.5.11", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.11.tgz", - "integrity": "sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ==", - "dev": true, - "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true - }, - "node_modules/@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", - "dev": true - }, - "node_modules/@types/node": { - "version": "20.10.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.5.tgz", - "integrity": "sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/resolve": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", - "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", - "dev": true - }, - "node_modules/@types/semver": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", - "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", - "dev": true - }, - "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 - }, - "node_modules/@types/uuid": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.7.tgz", - "integrity": "sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==", - "dev": true - }, - "node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.16.0.tgz", - "integrity": "sha512-O5f7Kv5o4dLWQtPX4ywPPa+v9G+1q1x8mz0Kr0pXUtKsevo+gIJHLkGc8RxaZWtP8RrhwhSNIWThnW42K9/0rQ==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.16.0", - "@typescript-eslint/type-utils": "6.16.0", - "@typescript-eslint/utils": "6.16.0", - "@typescript-eslint/visitor-keys": "6.16.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.16.0.tgz", - "integrity": "sha512-H2GM3eUo12HpKZU9njig3DF5zJ58ja6ahj1GoHEHOgQvYxzoFJJEvC1MQ7T2l9Ha+69ZSOn7RTxOdpC/y3ikMw==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "6.16.0", - "@typescript-eslint/types": "6.16.0", - "@typescript-eslint/typescript-estree": "6.16.0", - "@typescript-eslint/visitor-keys": "6.16.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.16.0.tgz", - "integrity": "sha512-0N7Y9DSPdaBQ3sqSCwlrm9zJwkpOuc6HYm7LpzLAPqBL7dmzAUimr4M29dMkOP/tEwvOCC/Cxo//yOfJD3HUiw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.16.0", - "@typescript-eslint/visitor-keys": "6.16.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.16.0.tgz", - "integrity": "sha512-ThmrEOcARmOnoyQfYkHw/DX2SEYBalVECmoldVuH6qagKROp/jMnfXpAU/pAIWub9c4YTxga+XwgAkoA0pxfmg==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "6.16.0", - "@typescript-eslint/utils": "6.16.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.16.0.tgz", - "integrity": "sha512-hvDFpLEvTJoHutVl87+MG/c5C8I6LOgEx05zExTSJDEVU7hhR3jhV8M5zuggbdFCw98+HhZWPHZeKS97kS3JoQ==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.16.0.tgz", - "integrity": "sha512-VTWZuixh/vr7nih6CfrdpmFNLEnoVBF1skfjdyGnNwXOH1SLeHItGdZDHhhAIzd3ACazyY2Fg76zuzOVTaknGA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.16.0", - "@typescript-eslint/visitor-keys": "6.16.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.16.0.tgz", - "integrity": "sha512-T83QPKrBm6n//q9mv7oiSvy/Xq/7Hyw9SzSEhMHJwznEmQayfBM87+oAlkNAMEO7/MjIwKyOHgBJbxB0s7gx2A==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.16.0", - "@typescript-eslint/types": "6.16.0", - "@typescript-eslint/typescript-estree": "6.16.0", - "semver": "^7.5.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.16.0.tgz", - "integrity": "sha512-QSFQLruk7fhs91a/Ep/LqRdbJCZ1Rq03rqBdKT5Ky17Sz8zRLUksqIe9DW0pKtg/Z35/ztbLQ6qpOCN6rOC11A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.16.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz", - "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "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, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/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/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true - }, - "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, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/autoprefixer": { - "version": "10.4.20", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", - "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "browserslist": "^4.23.3", - "caniuse-lite": "^1.0.30001646", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.1", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "dev": true, - "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-jest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/babel-jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/babel-jest/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/babel-jest/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 - }, - "node_modules/babel-jest/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-jest/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/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, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@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-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true, - "license": "ISC" - }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", - "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", - "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": { - "caniuse-lite": "^1.0.30001688", - "electron-to-chromium": "^1.5.73", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.1" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "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, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "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 - }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bundle-require": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-4.0.2.tgz", - "integrity": "sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==", - "dev": true, - "dependencies": { - "load-tsconfig": "^0.2.3" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "peerDependencies": { - "esbuild": ">=0.17" - } - }, - "node_modules/cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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, - "engines": { - "node": ">=6" - } - }, - "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, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001692", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001692.tgz", - "integrity": "sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==", - "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/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "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, - "engines": { - "node": ">=10" - } - }, - "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", - "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": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/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, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", - "dev": true - }, - "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, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "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, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true, - "license": "MIT" - }, - "node_modules/colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", - "dev": true - }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "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 - }, - "node_modules/concat-with-sourcemaps": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", - "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", - "dev": true, - "license": "ISC", - "dependencies": { - "source-map": "^0.6.1" - } - }, - "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 - }, - "node_modules/create-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - }, - "bin": { - "create-jest": "bin/create-jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/create-jest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/create-jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/create-jest/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/create-jest/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 - }, - "node_modules/create-jest/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/create-jest/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "node_modules/cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" - } - }, - "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": ">= 8" - } - }, - "node_modules/css-declaration-sorter": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", - "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.0.9" - } - }, - "node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cssnano": { - "version": "5.1.15", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", - "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssnano-preset-default": "^5.2.14", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/cssnano" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/cssnano-preset-default": { - "version": "5.2.14", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", - "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "css-declaration-sorter": "^6.3.1", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.1", - "postcss-convert-values": "^5.1.3", - "postcss-discard-comments": "^5.1.2", - "postcss-discard-duplicates": "^5.1.0", - "postcss-discard-empty": "^5.1.1", - "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.7", - "postcss-merge-rules": "^5.1.4", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.4", - "postcss-minify-selectors": "^5.2.1", - "postcss-normalize-charset": "^5.1.0", - "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.1", - "postcss-normalize-repeat-style": "^5.1.1", - "postcss-normalize-string": "^5.1.0", - "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.1", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.2", - "postcss-reduce-transforms": "^5.1.0", - "postcss-svgo": "^5.1.0", - "postcss-unique-selectors": "^5.1.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/cssnano-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", - "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/cssnano/node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/cssnano/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, - "node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "license": "MIT", - "dependencies": { - "css-tree": "^1.1.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/dedent": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", - "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", - "dev": true, - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true, - "license": "MIT" - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" - } - }, - "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 - }, - "node_modules/electron-to-chromium": { - "version": "1.5.80", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.80.tgz", - "integrity": "sha512-LTrKpW0AqIuHwmlVNV+cjFYTnXtM9K37OGhpe0ZI10ScPSxqVSryZHIY3WnCS5NSYbBODRTZyhRMS2h5FAEqAw==", - "dev": true, - "license": "ISC" - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-module-lexer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", - "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", - "dev": true - }, - "node_modules/esbuild": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz", - "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.11", - "@esbuild/android-arm": "0.19.11", - "@esbuild/android-arm64": "0.19.11", - "@esbuild/android-x64": "0.19.11", - "@esbuild/darwin-arm64": "0.19.11", - "@esbuild/darwin-x64": "0.19.11", - "@esbuild/freebsd-arm64": "0.19.11", - "@esbuild/freebsd-x64": "0.19.11", - "@esbuild/linux-arm": "0.19.11", - "@esbuild/linux-arm64": "0.19.11", - "@esbuild/linux-ia32": "0.19.11", - "@esbuild/linux-loong64": "0.19.11", - "@esbuild/linux-mips64el": "0.19.11", - "@esbuild/linux-ppc64": "0.19.11", - "@esbuild/linux-riscv64": "0.19.11", - "@esbuild/linux-s390x": "0.19.11", - "@esbuild/linux-x64": "0.19.11", - "@esbuild/netbsd-x64": "0.19.11", - "@esbuild/openbsd-x64": "0.19.11", - "@esbuild/sunos-x64": "0.19.11", - "@esbuild/win32-arm64": "0.19.11", - "@esbuild/win32-ia32": "0.19.11", - "@esbuild/win32-x64": "0.19.11" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", - "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.56.0", - "@humanwhocodes/config-array": "^0.11.13", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-prettier": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", - "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.2.tgz", - "integrity": "sha512-dhlpWc9vOwohcWmClFcA+HjlvUpuyynYs0Rf+L/P6/0iQE6vlHW9l5bkfzN62/Stm9fbq8ku46qzde76T1xlSg==", - "dev": true, - "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.6" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-plugin-prettier" - }, - "peerDependencies": { - "@types/eslint": ">=8.0.0", - "eslint": ">=8.0.0", - "eslint-config-prettier": "*", - "prettier": ">=3.0.0" - }, - "peerDependenciesMeta": { - "@types/eslint": { - "optional": true - }, - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/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, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint/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, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/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 - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/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, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/eslint/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, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "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, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "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, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true, - "license": "MIT" - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dev": true, - "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/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, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "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 - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", - "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "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, - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", - "dev": true - }, - "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "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, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" - } - }, - "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "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 - }, - "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, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gauge": { - "resolved": "examples/gauge", - "link": true - }, - "node_modules/generic-names": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz", - "integrity": "sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "loader-utils": "^3.2.0" - } - }, - "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, - "engines": { - "node": ">=6.9.0" - } - }, - "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, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "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, - "engines": { - "node": ">=8.0.0" - } - }, - "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, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-tsconfig": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", - "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", - "dev": true, - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/glob/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, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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 - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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 - }, - "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, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==", - "dev": true, - "license": "ISC" - }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/ignore": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", - "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-3.0.0.tgz", - "integrity": "sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==", - "dev": true, - "license": "MIT", - "dependencies": { - "import-from": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", - "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-from/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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "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==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "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 - }, - "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 - }, - "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, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", - "dev": true, - "dependencies": { - "builtin-modules": "^3.3.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", - "dev": true - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-object": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz", - "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "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, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", - "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=10" - } - }, - "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, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "dev": true, - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", - "dev": true, - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", - "dev": true, - "dependencies": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-circus/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-circus/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-circus/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 - }, - "node_modules/jest-circus/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-circus/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", - "dev": true, - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-cli/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-cli/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-cli/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-cli/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 - }, - "node_modules/jest-cli/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-cli/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-config/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-config/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-config/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-config/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 - }, - "node_modules/jest-config/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-config/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-diff/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-diff/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-diff/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 - }, - "node_modules/jest-diff/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-diff/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-each/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-each/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-each/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 - }, - "node_modules/jest-each/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-each/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-matcher-utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-matcher-utils/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-matcher-utils/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 - }, - "node_modules/jest-matcher-utils/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-matcher-utils/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-message-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-message-util/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-message-util/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 - }, - "node_modules/jest-message-util/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-message-util/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "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, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dev": true, - "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-resolve/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-resolve/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-resolve/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 - }, - "node_modules/jest-resolve/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-runner/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-runner/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-runner/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 - }, - "node_modules/jest-runner/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runner/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runtime/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-runtime/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-runtime/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-runtime/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 - }, - "node_modules/jest-runtime/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-snapshot/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 - }, - "node_modules/jest-snapshot/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-snapshot/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-util/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-util/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-util/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 - }, - "node_modules/jest-util/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-util/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-validate/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-validate/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 - }, - "node_modules/jest-validate/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-validate/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watcher": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-watcher/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-watcher/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-watcher/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-watcher/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 - }, - "node_modules/jest-watcher/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watcher/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dev": true, - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker/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, - "engines": { - "node": ">=8" - } - }, - "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, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jiti": { - "version": "1.21.7", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", - "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", - "dev": true, - "license": "MIT", - "bin": { - "jiti": "bin/jiti.js" - } - }, - "node_modules/joycon": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", - "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "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 - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "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 - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "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, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "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, - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lilconfig": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", - "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==", - "dev": true, - "engines": { - "node": ">=14" - } - }, - "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 - }, - "node_modules/load-tsconfig": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", - "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/loader-utils": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", - "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12.13.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", - "dev": true - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/magic-string": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", - "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" - } - }, - "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, - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true, - "license": "CC0-1.0" - }, - "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 - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "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 - }, - "node_modules/navigraph": { - "version": "1.2.35", - "resolved": "https://registry.npmjs.org/navigraph/-/navigraph-1.2.35.tgz", - "integrity": "sha512-ykcbI8J9mHQc0YIEZ1hNWUWg1toyHfcXi/bVnmpGeaLRWCboI4XfRS35WCHIR77QUywbUsegqy+5WQaEEmGr6g==", - "dependencies": { - "@navigraph/app": "1.3.5", - "@navigraph/auth": "2.5.1", - "@navigraph/charts": "2.0.4", - "@navigraph/packages": "1.0.0" - } - }, - "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 - }, - "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", - "dev": true, - "license": "MIT" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "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, - "dependencies": { - "wrappy": "1" - } - }, - "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, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "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, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-queue": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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, - "engines": { - "node": ">=6" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "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, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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, - "engines": { - "node": ">=8" - } - }, - "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, - "engines": { - "node": ">=0.10.0" - } - }, - "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, - "engines": { - "node": ">=8" - } - }, - "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 - }, - "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", - "dev": true, - "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", - "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "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, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/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, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/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, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/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, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/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, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/postcss": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.0.tgz", - "integrity": "sha512-27VKOqrYfPncKA2NrFOVhP5MGAfHKLYn/Q0mz9cNQyRAKYi3VNHwYU2qKKqPCqgBmeeJ0uAFB56NumXZ5ZReXg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.8", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-calc": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", - "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.0.9", - "postcss-value-parser": "^4.2.0" - }, - "peerDependencies": { - "postcss": "^8.2.2" - } - }, - "node_modules/postcss-colormin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", - "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-convert-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", - "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-comments": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", - "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-duplicates": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-empty": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", - "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-overridden": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-js": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", - "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.4.21" - } - }, - "node_modules/postcss-load-config": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", - "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "lilconfig": "^3.0.0", - "yaml": "^2.3.4" - }, - "engines": { - "node": ">= 14" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-merge-longhand": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", - "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-merge-rules": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", - "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.1.0", - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-font-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", - "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-gradients": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", - "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", - "dev": true, - "license": "MIT", - "dependencies": { - "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-params": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", - "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-selectors": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", - "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-modules": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.3.1.tgz", - "integrity": "sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "generic-names": "^4.0.0", - "icss-replace-symbols": "^1.1.0", - "lodash.camelcase": "^4.3.0", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "string-hash": "^1.1.1" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-modules-extract-imports": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", - "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-local-by-default": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", - "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", - "dev": true, - "license": "MIT", - "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^7.0.0", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", - "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-modules-scope": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", - "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", - "dev": true, - "license": "ISC", - "dependencies": { - "postcss-selector-parser": "^7.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", - "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "icss-utils": "^5.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-nested": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", - "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.1.1" - }, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-normalize-charset": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", - "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-display-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", - "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-positions": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", - "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-repeat-style": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", - "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-string": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", - "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-timing-functions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", - "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-unicode": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", - "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", - "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", - "dev": true, - "license": "MIT", - "dependencies": { - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-whitespace": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", - "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-ordered-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", - "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-reduce-initial": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", - "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-reduce-transforms": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", - "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-svgo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", - "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-unique-selectors": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", - "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz", - "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==", - "dev": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "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, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/promise.series": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/promise.series/-/promise.series-0.2.0.tgz", - "integrity": "sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pure-rand": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", - "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ] - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pify": "^2.3.0" - } - }, - "node_modules/read-cache/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "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, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, - "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "2.79.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz", - "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", - "dev": true, - "license": "MIT", - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/rollup-plugin-copy": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-copy/-/rollup-plugin-copy-3.5.0.tgz", - "integrity": "sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==", - "dev": true, - "dependencies": { - "@types/fs-extra": "^8.0.1", - "colorette": "^1.1.0", - "fs-extra": "^8.1.0", - "globby": "10.0.1", - "is-plain-object": "^3.0.0" - }, - "engines": { - "node": ">=8.3" - } - }, - "node_modules/rollup-plugin-copy/node_modules/globby": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz", - "integrity": "sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==", - "dev": true, - "dependencies": { - "@types/glob": "^7.1.1", - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.0.3", - "glob": "^7.1.3", - "ignore": "^5.1.1", - "merge2": "^1.2.3", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/rollup-plugin-esbuild": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-esbuild/-/rollup-plugin-esbuild-6.1.0.tgz", - "integrity": "sha512-HPpXU65V8bSpW8eSYPahtUJaJHmbxJGybuf/M8B3bz/6i11YaYHlNNJIQ38gSEV0FyohQOgVxJ2YMEEZtEmwvA==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.0.5", - "debug": "^4.3.4", - "es-module-lexer": "^1.3.1", - "get-tsconfig": "^4.7.2" - }, - "engines": { - "node": ">=14.18.0" - }, - "peerDependencies": { - "esbuild": ">=0.18.0", - "rollup": "^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0" - } - }, - "node_modules/rollup-plugin-import-css": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/rollup-plugin-import-css/-/rollup-plugin-import-css-3.3.5.tgz", - "integrity": "sha512-wSfzveEzvUDlVevo70kmVD5Mk785UN55NG4C7VVnrmdE0qZ8apcVVFajyCPfFYSNxq5YkccOcrGUT2T/2HnEcQ==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.0.4" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "rollup": "^2.x.x || ^3.x.x || ^4.x.x" - } - }, - "node_modules/rollup-plugin-postcss": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-postcss/-/rollup-plugin-postcss-4.0.2.tgz", - "integrity": "sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "concat-with-sourcemaps": "^1.1.0", - "cssnano": "^5.0.1", - "import-cwd": "^3.0.0", - "p-queue": "^6.6.2", - "pify": "^5.0.0", - "postcss-load-config": "^3.0.0", - "postcss-modules": "^4.0.0", - "promise.series": "^0.2.0", - "resolve": "^1.19.0", - "rollup-pluginutils": "^2.8.2", - "safe-identifier": "^0.4.2", - "style-inject": "^0.3.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "postcss": "8.x" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/rollup-plugin-postcss/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": ">=8" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "dev": true, - "license": "MIT", - "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" - }, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/rollup-plugin-postcss/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/rollup-plugin-postcss/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, - "node_modules/rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "estree-walker": "^0.6.1" - } - }, - "node_modules/rollup-pluginutils/node_modules/estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true, - "license": "MIT" - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-identifier": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/safe-identifier/-/safe-identifier-0.4.2.tgz", - "integrity": "sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==", - "dev": true, - "license": "ISC" - }, - "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "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, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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, - "engines": { - "node": ">=8" - } - }, - "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 - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", - "dev": true, - "license": "MIT" - }, - "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, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-hash": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", - "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==", - "dev": true, - "license": "CC0-1.0" - }, - "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, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "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, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "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, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "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, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "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, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "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, - "engines": { - "node": ">=8" - } - }, - "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, - "engines": { - "node": ">=6" - } - }, - "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, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/style-inject": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/style-inject/-/style-inject-0.3.0.tgz", - "integrity": "sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==", - "dev": true, - "license": "MIT" - }, - "node_modules/stylehacks": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", - "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/sucrase": { - "version": "3.35.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", - "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "^10.3.10", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/sucrase/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "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, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/svgo/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/synckit": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", - "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", - "dev": true, - "dependencies": { - "@pkgr/core": "^0.1.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, - "node_modules/tailwindcss": { - "version": "3.4.17", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", - "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", - "dev": true, - "license": "MIT", - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "arg": "^5.0.2", - "chokidar": "^3.6.0", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.3.2", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "jiti": "^1.21.6", - "lilconfig": "^3.1.3", - "micromatch": "^4.0.8", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.1.1", - "postcss": "^8.4.47", - "postcss-import": "^15.1.0", - "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.2", - "postcss-nested": "^6.2.0", - "postcss-selector-parser": "^6.1.2", - "resolve": "^1.22.8", - "sucrase": "^3.35.0" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tailwindcss/node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true, - "license": "MIT" - }, - "node_modules/tailwindcss/node_modules/lilconfig": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", - "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antonk52" - } - }, - "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, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/test-exclude/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, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dev": true, - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, - "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 - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/ts-api-utils": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", - "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", - "dev": true, - "engines": { - "node": ">=16.13.0" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true - }, - "node_modules/ts-jest": { - "version": "29.1.1", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", - "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", - "dev": true, - "dependencies": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^29.0.0", - "json5": "^2.2.3", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "^7.5.3", - "yargs-parser": "^21.0.1" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/types": "^29.0.0", - "babel-jest": "^29.0.0", - "jest": "^29.0.0", - "typescript": ">=4.3 <6" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@jest/types": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - } - } - }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/tsup": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/tsup/-/tsup-8.0.1.tgz", - "integrity": "sha512-hvW7gUSG96j53ZTSlT4j/KL0q1Q2l6TqGBFc6/mu/L46IoNWqLLUzLRLP1R8Q7xrJTmkDxxDoojV5uCVs1sVOg==", - "dev": true, - "dependencies": { - "bundle-require": "^4.0.0", - "cac": "^6.7.12", - "chokidar": "^3.5.1", - "debug": "^4.3.1", - "esbuild": "^0.19.2", - "execa": "^5.0.0", - "globby": "^11.0.3", - "joycon": "^3.0.1", - "postcss-load-config": "^4.0.1", - "resolve-from": "^5.0.0", - "rollup": "^4.0.2", - "source-map": "0.8.0-beta.0", - "sucrase": "^3.20.3", - "tree-kill": "^1.2.2" - }, - "bin": { - "tsup": "dist/cli-default.js", - "tsup-node": "dist/cli-node.js" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@microsoft/api-extractor": "^7.36.0", - "@swc/core": "^1", - "postcss": "^8.4.12", - "typescript": ">=4.5.0" - }, - "peerDependenciesMeta": { - "@microsoft/api-extractor": { - "optional": true - }, - "@swc/core": { - "optional": true - }, - "postcss": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "node_modules/tsup/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/tsup/node_modules/rollup": { - "version": "4.30.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.30.1.tgz", - "integrity": "sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.6" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.30.1", - "@rollup/rollup-android-arm64": "4.30.1", - "@rollup/rollup-darwin-arm64": "4.30.1", - "@rollup/rollup-darwin-x64": "4.30.1", - "@rollup/rollup-freebsd-arm64": "4.30.1", - "@rollup/rollup-freebsd-x64": "4.30.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.30.1", - "@rollup/rollup-linux-arm-musleabihf": "4.30.1", - "@rollup/rollup-linux-arm64-gnu": "4.30.1", - "@rollup/rollup-linux-arm64-musl": "4.30.1", - "@rollup/rollup-linux-loongarch64-gnu": "4.30.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.30.1", - "@rollup/rollup-linux-riscv64-gnu": "4.30.1", - "@rollup/rollup-linux-s390x-gnu": "4.30.1", - "@rollup/rollup-linux-x64-gnu": "4.30.1", - "@rollup/rollup-linux-x64-musl": "4.30.1", - "@rollup/rollup-win32-arm64-msvc": "4.30.1", - "@rollup/rollup-win32-ia32-msvc": "4.30.1", - "@rollup/rollup-win32-x64-msvc": "4.30.1", - "fsevents": "~2.3.2" - } - }, - "node_modules/tsup/node_modules/source-map": { - "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", - "dev": true, - "dependencies": { - "whatwg-url": "^7.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "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": ">=4" - } - }, - "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, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", - "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, - "license": "MIT" - }, - "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "node_modules/v8-to-istanbul": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", - "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "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, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "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, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/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, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi-cjs/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 - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/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 - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yaml": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", - "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", - "dev": true, - "engines": { - "node": ">= 14" - } - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "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, - "engines": { - "node": ">=12" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "src/js": { - "name": "@navigraph/msfs-navigation-data-interface", - "version": "1.1.1", - "license": "MIT" - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index d3fbc031..00000000 --- a/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "workspaces": [ - "examples/*", - "src/js/*" - ], - "scripts": { - "format": "prettier --write .", - "lint:js": "eslint \"src/js/**/*.ts\"", - "setup": ".\\scripts\\setup.bat", - "build:wasm": ".\\scripts\\build.bat both", - "build:wasm:2020": ".\\scripts\\build.bat 2020", - "build:wasm:2024": ".\\scripts\\build.bat 2024", - "build:js": "cd .\\src\\js && npm run build", - "build:gauge": "cd .\\examples\\gauge && npm run build", - "dev:gauge": "cd .\\examples\\gauge && npm run dev", - "jest": "jest --verbose", - "test": ".\\scripts\\test.bat", - "test-workflow": ".\\scripts\\test_workflow.bat", - "docker": ".\\scripts\\run_docker_cmd.bat" - }, - "devDependencies": { - "@ianvs/prettier-plugin-sort-imports": "^4.1.1", - "@microsoft/msfs-types": "^1.14.6", - "@types/jest": "^29.5.11", - "@types/node": "^20.10.5", - "@types/uuid": "^9.0.7", - "@typescript-eslint/eslint-plugin": "^6.9.0", - "@typescript-eslint/parser": "^6.9.0", - "dotenv": "^16.3.1", - "eslint": "^8.52.0", - "eslint-config-prettier": "^9.0.0", - "eslint-plugin-prettier": "^5.0.1", - "jest": "^29.7.0", - "prettier": "^3.0.3", - "ts-jest": "^29.1.1", - "ts-node": "^10.9.2", - "tsup": "^8.0.1", - "typescript": "^5.2.2", - "uuid": "^9.0.1" - } -} \ No newline at end of file diff --git a/scripts/build.bat b/scripts/build.bat deleted file mode 100644 index dc3a4be3..00000000 --- a/scripts/build.bat +++ /dev/null @@ -1,7 +0,0 @@ -@echo off - -cd %~dp0 - -CALL .\run_docker_cmd.bat ./scripts/build.sh %* - -copy ..\out20\msfs_navigation_data_interface.wasm ..\examples\aircraft\PackageSources\SimObjects\Airplanes\Navigraph_Navigation_Data_Interface_Aircraft\panel \ No newline at end of file diff --git a/scripts/build.sh b/scripts/build.sh deleted file mode 100755 index 90722f2b..00000000 --- a/scripts/build.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -if ! [ -a out20 ]; then -mkdir out20 -fi - -if ! [ -a out24 ]; then -mkdir out24 -fi - -if [ $1 = "2020" ] || [ $1 = "both" ]; then - echo "Building MSFS 2020" - cargo-msfs build msfs2020 -i . -o out20/msfs_navigation_data_interface.wasm -fi - -if [ $1 = "2024" ] || [ $1 = "both" ]; then - echo "Building MSFS 2024" - cargo-msfs build msfs2024 -i . -o out24/msfs_navigation_data_interface.wasm -fi diff --git a/scripts/run_cargo_cmd.bat b/scripts/run_cargo_cmd.bat deleted file mode 100644 index b5ecb0f2..00000000 --- a/scripts/run_cargo_cmd.bat +++ /dev/null @@ -1,9 +0,0 @@ -@echo off - -cd %~dp0 - -if "%1"=="" ( - echo No Cargo command specified -) else ( - .\run_docker_cmd.bat cargo %* -) \ No newline at end of file diff --git a/scripts/run_docker_cmd.bat b/scripts/run_docker_cmd.bat deleted file mode 100644 index c4a39977..00000000 --- a/scripts/run_docker_cmd.bat +++ /dev/null @@ -1,7 +0,0 @@ -@echo off - -set image="local" - -cd %~dp0 - -docker run --rm -it -v "%cd%\..\:/external" -w /external %image% %* \ No newline at end of file diff --git a/scripts/run_docker_cmd.sh b/scripts/run_docker_cmd.sh deleted file mode 100755 index 0cab467a..00000000 --- a/scripts/run_docker_cmd.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -IMAGE="local" - -cd "$(dirname "$0")" - -echo "Running $@ in docker" - -docker run --rm -v "$(pwd)/../:/external" -w /external $IMAGE "$@" \ No newline at end of file diff --git a/scripts/setup.bat b/scripts/setup.bat deleted file mode 100644 index b0e65871..00000000 --- a/scripts/setup.bat +++ /dev/null @@ -1,3 +0,0 @@ -@echo off - -docker build -t local . \ No newline at end of file diff --git a/scripts/test.bat b/scripts/test.bat deleted file mode 100644 index fb17d3e4..00000000 --- a/scripts/test.bat +++ /dev/null @@ -1,9 +0,0 @@ -@echo off - -cd %~dp0 - -rmdir /s /q ..\test_work -mkdir ..\test_work - -:: Docker is a must for now, WASI preopens don't exist on windows. -call .\run_docker_cmd.bat npm run jest diff --git a/scripts/workflow.sh b/scripts/workflow.sh deleted file mode 100755 index e70a97ba..00000000 --- a/scripts/workflow.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -docker build -t local . - -./scripts/run_docker_cmd.sh ./scripts/build.sh both - -echo "Building done, now zipping" - -zip -j 2020.zip out20/* -zip -j 2024.zip out24/* \ No newline at end of file diff --git a/src/test/constants.ts b/src/test/constants.ts deleted file mode 100644 index af214977..00000000 --- a/src/test/constants.ts +++ /dev/null @@ -1,2 +0,0 @@ -export const WORK_FOLDER_PATH = "./test_work" -export const WEBASSEMBLY_PATH = "./out24/msfs_navigation_data_interface.wasm" diff --git a/src/test/index.spec.ts b/src/test/index.spec.ts deleted file mode 100644 index c413189f..00000000 --- a/src/test/index.spec.ts +++ /dev/null @@ -1,490 +0,0 @@ -import { - Airport, - AirwayLevel, - AirwayRouteType, - Fix, - FixType, - IfrCapability, - NavigraphNavigationDataInterface, - RunwaySurfaceCode, -} from "../js" -import { ControlledAirspaceType, Path, PathType, RestrictiveAirspaceType } from "../js/types/airspace" -import { Communication, CommunicationType, FrequencyUnits } from "../js/types/communication" -import { DatabaseInfo } from "../js/types/database_info" -import { Gate } from "../js/types/gate" -import { GlsNavaid } from "../js/types/gls_navaid" -import { NdbNavaid } from "../js/types/ndb_navaid" -import { ApproachTypeIdentifier, PathPoint } from "../js/types/path_point" -import { ApproachType } from "../js/types/procedure" -import { AltitudeDescriptor, LegType, TurnDirection } from "../js/types/ProcedureLeg" -import { IFLegData } from "../js/types/ProcedureLeg/IFLeg" -import { RunwayLights, RunwaySurface, RunwayThreshold, TrafficPattern } from "../js/types/runway_threshold" -import { VhfNavaid } from "../js/types/vhfnavaid" -import { Waypoint } from "../js/types/waypoint" - -const navigationDataInterface = new NavigraphNavigationDataInterface() - -describe("test", () => { - it("Database info", async () => { - const info = await navigationDataInterface.get_database_info("KJFK") - - expect(info).toStrictEqual({ - airac_cycle: "2410", - effective_from_to: ["03-10-2024", "30-10-2024"], - previous_from_to: ["depricated", "depricated"], - } satisfies DatabaseInfo) - }) - - it("Fetch airport", async () => { - const airport = await navigationDataInterface.get_airport("KJFK") - - expect(airport).toStrictEqual({ - airport_type: "C", - area_code: "USA", - city: "NEW YORK", - continent: "NORTH AMERICA", - country: "UNITED STATES", - country_3letter: "USA", - ident: "KJFK", - icao_code: "K6", - location: { - lat: 40.63992777777778, - long: -73.77869166666666, - }, - name: "KENNEDY INTL", - ifr_capability: IfrCapability.Yes, - longest_runway_surface_code: RunwaySurfaceCode.Hard, - magnetic_variation: -13, - elevation: 13, - transition_altitude: 18000, - transition_level: 18000, - speed_limit: 250, - speed_limit_altitude: 10000, - state: "NEW YORK", - state_2letter: "NY", - iata_ident: "JFK", - } satisfies Airport) - }) - - it("Get waypoints", async () => { - const waypoints = await navigationDataInterface.get_waypoints("GLENN") - - expect(waypoints.length).toBe(3) - - expect(waypoints[0]).toStrictEqual({ - area_code: "SPA", - continent: "PACIFIC", - country: "NEW ZEALAND", - datum_code: "WGE", - icao_code: "NZ", - ident: "GLENN", - location: { - lat: -42.88116388888889, - long: 172.8397388888889, - }, - name: "GLENN", - } satisfies Waypoint) - }) - - it("Get vhf navaids", async () => { - const navaids = await navigationDataInterface.get_vhf_navaids("CH") - - expect(navaids.length).toBe(3) - - expect(navaids[0]).toStrictEqual({ - airport_ident: "EKCH", - area_code: "EUR", - continent: "EUROPE", - country: "DENMARK", - datum_code: "WGE", - icao_code: "EK", - ident: "CH", - location: { - lat: 55.59326388888889, - long: 12.608291666666666, - }, - frequency: 110.5, - name: "KASTRUP", - magnetic_variation: 5.1, - range: 25, - } satisfies VhfNavaid) - }) - - it("Get ndb navaids", async () => { - const navaids = await navigationDataInterface.get_ndb_navaids("CH") - - expect(navaids.length).toBe(4) - - expect(navaids[0]).toStrictEqual({ - area_code: "AFR", - continent: "AFRICA", - country: "MOZAMBIQUE", - datum_code: "WGE", - icao_code: "FQ", - ident: "CH", - location: { - lat: -19.10385, - long: 33.432947222222225, - }, - frequency: 282, - name: "CHIMOIO", - range: 75, - } satisfies NdbNavaid) - }) - - it("Get airports in range", async () => { - const airports = await navigationDataInterface.get_airports_in_range({ lat: 51.468, long: -0.4551 }, 640) - - expect(airports.length).toBe(1506) - }) - - it("Get waypoints in range", async () => { - const waypoints = await navigationDataInterface.get_waypoints_in_range({ lat: -43.4876, long: 172.5374 }, 10) - - expect(waypoints.length).toBe(126) - }) - - it("Get vhf navaids in range", async () => { - const vhf_navaids = await navigationDataInterface.get_vhf_navaids_in_range({ lat: -43.4876, long: 172.5374 }, 10) - - expect(vhf_navaids.length).toBe(1) - }) - - it("Get ndb navaids in range", async () => { - const ndb_navaids = await navigationDataInterface.get_ndb_navaids_in_range({ lat: -45.9282, long: 170.1981 }, 5) - - expect(ndb_navaids.length).toBe(1) - }) - - it("Get controlled airspaces in range", async () => { - const airspaces = await navigationDataInterface.get_controlled_airspaces_in_range( - { lat: -43.4876, long: 172.5374 }, - 10, - ) - - expect(airspaces.length).toBe(17) - - const target_airspace = airspaces[1] - - expect(target_airspace.airspace_center).toBe("NZCH") - expect(target_airspace.airspace_type).toBe(ControlledAirspaceType.TmaOrTca) - expect(target_airspace.area_code).toBe("SPA") - expect(target_airspace.icao_code).toBe("NZ") - expect(target_airspace.name).toBe("CHRISTCHURCH CTA/C") - expect(target_airspace.boundary_paths.length).toBe(11) - - expect(target_airspace.boundary_paths[0]).toStrictEqual({ - location: { - lat: -39.03916666666667, - long: 173.5413888888889, - }, - path_type: PathType.GreatCircle, - } satisfies Path) - - expect(target_airspace.boundary_paths[1]).toStrictEqual({ - location: { - lat: -40.77753611111111, - long: 172.74154166666668, - }, - arc: { - bearing: 288.9, - direction: TurnDirection.Left, - distance: 100, - origin: { - lat: -41.33722777777778, - long: 174.8169611111111, - }, - }, - path_type: PathType.Arc, - } satisfies Path) - }) - - it("Get restrictive airspaces in range", async () => { - const airspaces = await navigationDataInterface.get_restrictive_airspaces_in_range( - { lat: -43.4876, long: 172.5374 }, - 10, - ) - - expect(airspaces.length).toBe(5) - - const target_airspace = airspaces[0] - - expect(target_airspace.area_code).toBe("SPA") - expect(target_airspace.icao_code).toBe("NZ") - expect(target_airspace.name).toBe("WEST MELTON, CANTERBURY") - expect(target_airspace.airspace_type).toBe(RestrictiveAirspaceType.Danger) - expect(target_airspace.designation).toBe("827") - expect(target_airspace.boundary_paths.length).toBe(8) - expect(target_airspace.boundary_paths[0]).toStrictEqual({ - location: { - lat: -43.46666666666667, - long: 172.36977777777778, - }, - path_type: PathType.GreatCircle, - } satisfies Path) - }) - - it("Get communications in range", async () => { - const communications = await navigationDataInterface.get_communications_in_range( - { lat: -43.4876, long: 172.5374 }, - 10, - ) - - expect(communications.length).toBe(48) - }) - - it("Get airways", async () => { - const airways = await navigationDataInterface.get_airways("A1") - - const target_airway = airways[1] - - expect(airways.length).toBe(3) - expect(airways[0].direction).toBeUndefined() - expect(target_airway.fixes.length).toBe(36) - expect(target_airway.ident).toBe("A1") - expect(target_airway.level).toBe(AirwayLevel.Both) - expect(target_airway.route_type).toBe(AirwayRouteType.OfficialDesignatedAirwaysExpectRnavAirways) - expect(target_airway.fixes[0]).toStrictEqual({ - fix_type: FixType.VhfNavaid, - ident: "KEC", - icao_code: "RJ", - location: { - lat: 33.447741666666666, - long: 135.79449444444444, - }, - } satisfies Fix) - }) - - it("Get airways at fix", async () => { - const airways = await navigationDataInterface.get_airways_at_fix("ODOWD", "NZ") - - expect(airways.length).toBe(4) - }) - - it("Get airways in range", async () => { - const airways = await navigationDataInterface.get_airways_in_range({ lat: -43.4876, long: 172.5374 }, 10) - - expect(airways.length).toBe(27) - }) - - it("Get runways at airport", async () => { - const runways = await navigationDataInterface.get_runways_at_airport("NZCH") - - expect(runways.length).toBe(4) - - const target_runway = runways[0] - - expect(target_runway).toStrictEqual({ - icao_code: "NZ", - ident: "RW02", - elevation: 123, - gradient: -0.28, - length: 10787, - width: 148, - lights: RunwayLights.Yes, - location: { - lat: -43.49763055555555, - long: 172.5221138888889, - }, - magnetic_bearing: 16, - true_bearing: 40.0, - surface: RunwaySurface.Bitumen, - traffic_pattern: TrafficPattern.Left, - } satisfies RunwayThreshold) - }) - - it("Get departures", async () => { - const departures = await navigationDataInterface.get_departures_at_airport("KLAX") - - expect(departures.length).toBe(24) - - const target_departure = departures.find(departure => departure.ident === "PNDAH2") - - expect(target_departure?.ident).toBe("PNDAH2") - expect(target_departure?.runway_transitions.length).toBe(4) - expect(target_departure?.enroute_transitions.length).toBe(2) - expect(target_departure?.common_legs.length).toBe(4) - expect(target_departure?.runway_transitions[0].ident).toBe("RW24L") - expect(target_departure?.runway_transitions[0].legs.length).toBe(6) - expect(target_departure?.enroute_transitions[0].ident).toBe("OTAYY") - expect(target_departure?.enroute_transitions[0].legs.length).toBe(2) - }) - - it("Get Arrivals", async () => { - const arrivals = await navigationDataInterface.get_arrivals_at_airport("KLAX") - - expect(arrivals.length).toBe(24) - - const target_arrival = arrivals.find(arrival => arrival.ident === "BRUEN2") - - expect(target_arrival?.ident).toBe("BRUEN2") - expect(target_arrival?.enroute_transitions.length).toBe(4) - expect(target_arrival?.runway_transitions.length).toBe(4) - expect(target_arrival?.common_legs.length).toBe(7) - expect(target_arrival?.enroute_transitions[0].ident).toBe("ESTWD") - expect(target_arrival?.enroute_transitions[0].legs.length).toBe(5) - expect(target_arrival?.runway_transitions[0].ident).toBe("RW06L") - expect(target_arrival?.runway_transitions[0].legs.length).toBe(8) - }) - - it("Get Approaches", async () => { - const approaches = await navigationDataInterface.get_approaches_at_airport("KLAX") - - expect(approaches.length).toBe(24) - - const target_approach = approaches.find(approach => approach.ident === "I06L") - - expect(target_approach?.ident).toBe("I06L") - expect(target_approach?.legs.length).toBe(3) - expect(target_approach?.missed_legs.length).toBe(3) - expect(target_approach?.runway_ident).toBe("RW06L") - expect(target_approach?.approach_type).toBe(ApproachType.Ils) - expect(target_approach?.transitions.length).toBe(3) - expect(target_approach?.transitions[0].ident).toBe("CLVVR") - expect(target_approach?.transitions[0].legs.length).toBe(2) - }) - - it("Get waypoints at airport", async () => { - const waypoints = await navigationDataInterface.get_waypoints_at_airport("NZCH") - - expect(waypoints.length).toBe(201) - }) - - it("Get ndb navaids at airport", async () => { - const navaids = await navigationDataInterface.get_ndb_navaids_at_airport("EDDM") - - expect(navaids.length).toBe(4) - }) - - it("Check procedure leg types", async () => { - // This airport has the most different leg types - const approaches = await navigationDataInterface.get_approaches_at_airport("GCLP") - - const approach1 = approaches.find(approach => approach.ident == "L21RZ") - - const IF = approach1?.legs[0] - - expect(IF).toStrictEqual({ - leg_type: LegType.IF, - overfly: false, - fix: { - airport_ident: "GCLP", - fix_type: FixType.Waypoint, - ident: "TIPUX", - icao_code: "GC", - location: { - lat: 28.116, - long: -15.305055555555555, - }, - }, - theta: 25.4, - rho: 12.9, - altitude: { - altitude1: 2500, - descriptor: AltitudeDescriptor.AtOrAboveAlt1, - }, - recommended_navaid: { - airport_ident: "GCLP", - fix_type: FixType.IlsNavaid, - ident: "RLP", - icao_code: "GC", - location: { - lat: 27.915944444444445, - long: -15.393638888888889, - }, - }, - }) - }) - - it("Get gates at airport", async () => { - const gates = await navigationDataInterface.get_gates_at_airport("NZCH") - - expect(gates.length).toBe(48) - - expect(gates[0]).toStrictEqual({ - area_code: "SPA", - icao_code: "NZ", - ident: "10", - location: { - lat: -43.49016944444445, - long: 172.53940833333334, - }, - name: "N/A", - } satisfies Gate) - }) - - it("Get communications at airport", async () => { - const communications = await navigationDataInterface.get_communications_at_airport("NZCH") - - expect(communications.length).toBe(17) - - expect(communications[3]).toStrictEqual({ - area_code: "SPA", - airport_ident: "NZCH", - communication_type: CommunicationType.ApproachControl, - frequency: 126.1, - frequency_units: FrequencyUnits.VeryHigh, - callsign: "CHRISTCHURCH", - location: { - lat: -43.489444444444445, - long: 172.53444444444443, - }, - } satisfies Communication) - }) - - it("Get GlsNavaids at airport", async () => { - const communications = await navigationDataInterface.get_gls_navaids_at_airport("YSSY") - - expect(communications.length).toBe(6) - - expect(communications[0]).toStrictEqual({ - area_code: "SPA", - airport_ident: "YSSY", - icao_code: "YM", - ident: "G07A", - category: "1", - channel: 22790, - runway_ident: "RW07", - approach_angle: 3, - elevation: 21, - location: { - lat: -33.96333333333333, - long: 151.18477777777778, - }, - magnetic_approach_bearing: 62, - magnetic_variation: 13, - } satisfies GlsNavaid) - }) - - it("Get PathPoints at airport", async () => { - const pathpoints = await navigationDataInterface.get_path_points_at_airport("KLAX") - - expect(pathpoints.length).toBe(8) - - expect(pathpoints[0]).toStrictEqual({ - area_code: "USA", - airport_ident: "KLAX", - icao_code: "K2", - ident: "W06A", - runway_ident: "RW06L", - approach_ident: "R06LY", - approach_type: ApproachTypeIdentifier.LocalizerPerformanceVerticalGuidance, - course_width: 106.75, - flightpath_alignment_location: { - lat: 33.952133333333336, - long: -118.40162777777778, - }, - glidepath_angle: 3, - gnss_channel_number: 82507, - horizontal_alert_limit: 40, - vertical_alert_limit: 50, - landing_threshold_location: { - lat: 33.94911111111111, - long: -118.43115833333333, - }, - length_offset: 32, - ltp_ellipsoid_height: -1.5, - path_point_tch: 16.6725594664781, - } satisfies PathPoint) - }) -}) diff --git a/src/test/randomBigint.ts b/src/test/randomBigint.ts deleted file mode 100644 index 460bdddc..00000000 --- a/src/test/randomBigint.ts +++ /dev/null @@ -1,51 +0,0 @@ -// https://github.com/bnoordhuis/random-bigint/blob/master/index.js - -import { randomBytes } from "crypto" - -export function random(bits: number) { - if (bits < 0) - throw new RangeError('bits < 0') - - // @ts-ignore - const n = (bits >>> 3) + !!(bits & 7) // Round up to next byte. - const r = 8*n - bits - const s = 8 - r - const m = (1 << s) - 1 // Bits to mask off from MSB. - - const bytes = randomBytes(n) - - maskbits(m, bytes) - - return bytes2bigint(bytes) -} - -function maskbits(m: number, bytes: Buffer) { - // Mask off bits from the MSB that are > log2(bits). - // |bytes| is treated as a big-endian bigint so byte 0 is the MSB. - if (bytes.length > 0) - bytes[0] &= m -} - -function bytes2bigint(bytes: Buffer) { - let result = BigInt(0) - - const n = bytes.length - - // Read input in 8 byte slices. This is, on average and at the time - // of writing, about 35x faster for large inputs than processing them - // one byte at a time. - if (n >= 8) { - const view = new DataView(bytes.buffer, bytes.byteOffset) - - for (let i = 0, k = n & ~7; i < k; i += 8) { - const x = view.getBigUint64(i, false) - result = (result << BigInt(64)) + x - } - } - - // Now mop up any remaining bytes. - for (let i = n & ~7; i < n; i++) - result = result * BigInt(256) + BigInt(bytes[i]) - - return result -} \ No newline at end of file diff --git a/src/test/setup.ts b/src/test/setup.ts deleted file mode 100644 index 36d92b47..00000000 --- a/src/test/setup.ts +++ /dev/null @@ -1,312 +0,0 @@ -import { readFileSync } from "node:fs" -import { argv, env } from "node:process" -import { WASI } from "wasi" -import { v4 } from "uuid" -import { NavigraphNavigationDataInterface } from "../js" -import { WEBASSEMBLY_PATH, WORK_FOLDER_PATH } from "./constants" -import "dotenv/config" -import { random } from "./randomBigint" - -enum PanelService { - POST_QUERY = 1, - PRE_INSTALL = 2, - POST_INSTALL = 3, - PRE_INITIALIZE = 4, - POST_INITIALIZE = 5, - PRE_UPDATE = 6, - POST_UPDATE = 7, - PRE_GENERATE = 8, - POST_GENERATE = 9, - PRE_DRAW = 10, - POST_DRAW = 11, - PRE_KILL = 12, - POST_KILL = 13, - CONNECT_TO_WINDOW = 14, - DISCONNECT = 15, - PANEL_OPEN = 16, - PANEL_CLOSE = 17, -} - -type WasmInstance = { - exports: { - navigation_data_interface_gauge_callback: (fsContext: bigint, serviceId: PanelService, dataPointer: number) => void - malloc: (size: number) => number - free: (pointer: number) => void - memory: WebAssembly.Memory - __indirect_function_table: WebAssembly.Table - } -} - -// eslint-disable-next-line prefer-const -let wasmInstance: WasmInstance // The instance of the wasm module - -type WasmEventCallback = (argsPointer: number, argsSize: number, ctx: number) => void - -/** - * The events registered by wasm CommBus - * [eventName: string, callback, ctx] - * The third value, ctx value must be passed to the callback when called - */ -let wasmRegisteredEvents: [string, WasmEventCallback, number][] = [] - -type JSEventCallback = (args: string) => void - -/** - * The events registered by js CommBus - * [eventName, callback] - */ -const jsRegisteredEvents: [string, JSEventCallback][] = [] - -/** - * A Uint8Array created from the wasm instance memory buffer - * This is how one should access the wasm memory - */ -let memoryBuffer: Uint8Array - -/** - * Allocate memory in the wasm instance. This memory can be accessed by slicing the `memoryBuffer` with the pointer and the size. - * @param size - The number of bytes to allocate - * @returns A pointer to the allocated memory. - */ -function malloc(size: number): number { - const pointer = wasmInstance.exports.malloc(size) - memoryBuffer = new Uint8Array(wasmInstance.exports.memory.buffer as ArrayBufferLike) - return pointer -} - -/** - * Reads a CString from the `memoryBuffer`. - * - * The string terminates when a null byte is found - * @param pointer - The pointer to the location in `memoryBuffer` where the string is stored - * @returns The string from memory using `TextDecoder` - */ -function readString(pointer: number): string { - let lastChar = pointer - - while (memoryBuffer[lastChar] !== 0) { - lastChar++ - } - - return new TextDecoder().decode(memoryBuffer.slice(pointer, lastChar)) -} - -/** - * Writes a string to the `memoryBuffer` which can be read by wasm. - * @param value - The string to write to memory - * @returns A tuple containing the pointer to the string and the size of the string - */ -function writeString(value: string): [number, number] { - const encoded = new TextEncoder().encode(value) - - const pointer = malloc(encoded.length) - - memoryBuffer.set(encoded, pointer) - - return [pointer, encoded.length] -} - -class CommBusListener { - callWasm(name: string, args: string) { - const events = wasmRegisteredEvents.filter(([eventName]) => eventName === name) - - events.forEach(([, func, ctx]) => { - const [pointer, size] = writeString(args) - - func(pointer, size, ctx) - }) - } - - on(eventName: string, callback: JSEventCallback) { - if (!jsRegisteredEvents.find(([name, func]) => name === eventName && func === callback)) { - jsRegisteredEvents.push([eventName, callback]) - } - } -} - -// @ts-ignore The CommBusListener we return only needs to implement the CommBus functions we use -global.RegisterCommBusListener = function RegisterCommBusListener(callback?: () => void) { - if (callback) setTimeout(callback, 1) - - return new CommBusListener() -} - -// @ts-ignore Currently we only use generateGUID -global.Utils = { - generateGUID() { - return v4() - }, -} - -const wasiSystem = new WASI({ - version: "preview1", - args: argv, - env, - preopens: { - "\\work": WORK_FOLDER_PATH, - }, -}) - -// Read the wasm from the file, and compile it into a module -const wasmModule = new WebAssembly.Module(readFileSync(WEBASSEMBLY_PATH)) - -// eslint-disable-next-line prefer-const -let wasmFunctionTable: WebAssembly.Table // The table of callback functions in the wasm module - -/** - * Maps request ids to a tuple of the returned data's pointer, and the data's size - */ -const promiseResults = new Map() -const failedRequests: bigint[] = [] - -wasmInstance = new WebAssembly.Instance(wasmModule, { - wasi_snapshot_preview1: Object.assign(wasiSystem.wasiImport, { - commit_pages: () => { }, // Empty implementation of this function as it is needed for the WASM module to properly load - }), - env: { - fsCommBusCall: (eventNamePointer: number, args: number) => { - const eventName = readString(eventNamePointer) - - const events = jsRegisteredEvents.filter(([name]) => name === eventName) - - events.forEach(data => { - const func = data[1] // For some reason destructuing the array in args causes a type error... - func(readString(args)) - }) - - return true - }, - fsCommBusUnregister: (eventNamePointer: number, callback: number) => { - const eventName = readString(eventNamePointer) - const func = wasmFunctionTable.get(callback) as WasmEventCallback - - wasmRegisteredEvents = wasmRegisteredEvents.filter(([name, func1]) => name !== eventName || func1 !== func) - return 0 - }, - fsCommBusRegister: (eventNamePointer: number, callback: number, ctx: number) => { - const eventName = readString(eventNamePointer) - const func = wasmFunctionTable.get(callback) as WasmEventCallback - - if (!wasmRegisteredEvents.find(([name, func1]) => name === eventName && func1 === func)) { - wasmRegisteredEvents.push([eventName, func, ctx]) - } - - return true - }, - fsNetworkHttpRequestGetDataSize: (requestId: bigint) => { - const data = promiseResults.get(requestId) - if (!data) return 0 - - return data[1] - }, - fsNetworkHttpRequestGetData: (requestId: bigint) => { - const data = promiseResults.get(requestId) - if (!data) return 0 - - return data[0] - }, - fsNetworkHttpRequestGet: (urlPointer: number, paramPointer: number, callback: number, ctx: number) => { - const url = readString(urlPointer) - - const requestId = random(16) // Extra bits get lopped off by WASM, this number works - - // Currently the only network request is for the navigation data zip which is downloaded as a blob - fetch(url) - .then(result => result.blob()) - .then(async blob => { - const data = new Uint8Array(await blob.arrayBuffer()) - - const pointer = malloc(data.length) - - memoryBuffer.set(data, pointer) - promiseResults.set(requestId, [pointer, data.length]) - - const func = wasmFunctionTable.get(callback) as (requestId: bigint, statusCode: number, ctx: number) => void - func(requestId, 200, ctx) - }) - .catch(err => { - failedRequests.push(requestId) - }) - - return requestId - }, - fsNetworkHttpRequestGetState: (requestId: bigint) => { - if (failedRequests.includes(requestId)) { - return 4 // FS_NETWORK_HTTP_REQUEST_STATE_FAILED - } - if (promiseResults.has(requestId)) { - return 3 // FS_NETWORK_HTTP_REQUEST_STATE_DATA_READY - } - return 2 // FS_NETWORK_HTTP_REQUEST_STATE_WAITING_FOR_DATA - } - }, -}) as WasmInstance - -// Initially assign `memoryBuffer` to a new Uint8Array linked to the exported memoryBuffer -memoryBuffer = new Uint8Array(wasmInstance.exports.memory.buffer) -wasmFunctionTable = wasmInstance.exports.__indirect_function_table - -wasiSystem.initialize(wasmInstance) - -const fsContext = BigInt(0) - -// Run the initialisation functions to setup the gauge -wasmInstance.exports.navigation_data_interface_gauge_callback(fsContext, PanelService.PRE_INSTALL, 0) -wasmInstance.exports.navigation_data_interface_gauge_callback(fsContext, PanelService.POST_INITIALIZE, 0) - -const drawRate = 30 - -let runLifecycle = true - -/** - * Runs the life cycle loop for the gauge - * This only calls the PANEL_SERVICE_PRE_DRAW as of now as its the only function our wasm instance uses - * This will run until `runLifeCycle` is set to false - */ -async function lifeCycle() { - while (runLifecycle) { - await new Promise(resolve => setTimeout(resolve, 1000 / drawRate)) - - const floats = new Uint8Array(new Float64Array([0, 0, 0, 1 / drawRate]).buffer) // First 4 64 bit doubles of sGaugeDrawData - const ints = new Uint8Array(new Int32Array([0, 0, 0, 0]).buffer) // Last 4 32 bit ints of sGaugeDrawData - - const array = new Uint8Array([...floats, ...ints]) - - const pointer = malloc(array.length) - - memoryBuffer.set(array, pointer) - - wasmInstance.exports.navigation_data_interface_gauge_callback(fsContext, PanelService.PRE_DRAW, pointer) - - wasmInstance.exports.free(pointer) - } -} - -// This will run once for each test file -beforeAll(async () => { - const navigationDataInterface = new NavigraphNavigationDataInterface() - - const downloadUrl = process.env.NAVIGATION_DATA_SIGNED_URL - - if (!downloadUrl) { - throw new Error("Please specify the env var `NAVIGATION_DATA_SIGNED_URL`") - } - - // Utility function to convert onReady to a promise - const waitForReady = (navDataInterface: NavigraphNavigationDataInterface): Promise => { - return new Promise((resolve, _reject) => { - navDataInterface.onReady(() => resolve()) - }) - } - - await waitForReady(navigationDataInterface) - - await navigationDataInterface.download_navigation_data(downloadUrl) -}, 30000) - -void lifeCycle() - -// Cancel the lifeCycle after all tests have completed -afterAll(() => { - runLifecycle = false -}) From 46077ed39aa8871ed727315b33601bee7ac4c6e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Malte=20Hallstr=C3=B6m?= Date: Fri, 4 Apr 2025 16:27:38 +0200 Subject: [PATCH 02/37] refactor: move js -> ts folder & use bun --- .gitignore | 5 - .prettierrc | 8 + bun.lockb | Bin 0 -> 171392 bytes eslint.config.mjs | 59 +++ package.json | 23 ++ src/js/.eslintrc.js | 9 - src/js/index.ts | 3 - src/js/tsconfig.json | 13 - src/js/types/ProcedureLeg/AFLeg.ts | 19 - src/js/types/ProcedureLeg/CALeg.ts | 16 - src/js/types/ProcedureLeg/CFLeg.ts | 21 - src/js/types/ProcedureLeg/DFLeg.ts | 17 - src/js/types/ProcedureLeg/FALeg.ts | 25 -- src/js/types/ProcedureLeg/FCLeg.ts | 21 - src/js/types/ProcedureLeg/FDLeg.ts | 21 - src/js/types/ProcedureLeg/FMLeg.ts | 19 - src/js/types/ProcedureLeg/HALeg.ts | 27 -- src/js/types/ProcedureLeg/HFLeg.ts | 21 - src/js/types/ProcedureLeg/HMLeg.ts | 21 - src/js/types/ProcedureLeg/IFLeg.ts | 15 - src/js/types/ProcedureLeg/PILeg.ts | 21 - src/js/types/ProcedureLeg/RFLeg.ts | 23 -- src/js/types/ProcedureLeg/TFLeg.ts | 23 -- src/js/types/ProcedureLeg/VALeg.ts | 16 - src/js/types/ProcedureLeg/VMLeg.ts | 10 - src/js/types/ProcedureLeg/XDLeg.ts | 15 - src/js/types/ProcedureLeg/XILeg.ts | 13 - src/js/types/ProcedureLeg/XRLeg.ts | 17 - src/js/types/airport.ts | 37 -- src/js/types/gate.ts | 9 - src/js/types/index.ts | 16 - src/js/types/math.ts | 15 - src/js/types/meta.ts | 15 - src/js/types/ndb_navaid.ts | 15 - src/js/types/path_point.ts | 31 -- src/js/types/procedure.ts | 57 --- src/js/types/vhfnavaid.ts | 17 - src/js/types/waypoint.ts | 14 - src/{js => ts}/CommBus.d.ts | 4 +- src/ts/index.ts | 3 + .../interface/NavigationDataInterfaceTypes.ts | 30 +- .../NavigraphNavigationDataInterface.ts | 137 ++++--- src/{js => ts}/package.json | 53 +-- src/ts/tsconfig.json | 13 + src/{js => ts}/tsup.config.ts | 4 +- src/ts/types/ProcedureLeg/AFLeg.ts | 19 + src/ts/types/ProcedureLeg/CALeg.ts | 16 + src/ts/types/ProcedureLeg/CFLeg.ts | 21 + src/ts/types/ProcedureLeg/DFLeg.ts | 17 + src/ts/types/ProcedureLeg/FALeg.ts | 25 ++ src/ts/types/ProcedureLeg/FCLeg.ts | 21 + src/ts/types/ProcedureLeg/FDLeg.ts | 21 + src/ts/types/ProcedureLeg/FMLeg.ts | 19 + src/ts/types/ProcedureLeg/HALeg.ts | 27 ++ src/ts/types/ProcedureLeg/HFLeg.ts | 21 + src/ts/types/ProcedureLeg/HMLeg.ts | 21 + src/ts/types/ProcedureLeg/IFLeg.ts | 15 + src/ts/types/ProcedureLeg/PILeg.ts | 21 + src/ts/types/ProcedureLeg/RFLeg.ts | 23 ++ src/ts/types/ProcedureLeg/TFLeg.ts | 23 ++ src/ts/types/ProcedureLeg/VALeg.ts | 16 + src/ts/types/ProcedureLeg/VMLeg.ts | 10 + src/ts/types/ProcedureLeg/XDLeg.ts | 15 + src/ts/types/ProcedureLeg/XILeg.ts | 13 + src/ts/types/ProcedureLeg/XRLeg.ts | 17 + src/{js => ts}/types/ProcedureLeg/index.ts | 368 +++++++++--------- src/ts/types/airport.ts | 37 ++ src/{js => ts}/types/airspace.ts | 132 +++---- src/{js => ts}/types/airway.ts | 58 +-- src/{js => ts}/types/communication.ts | 146 +++---- src/{js => ts}/types/database_info.ts | 22 +- src/{js => ts}/types/fix.ts | 38 +- src/ts/types/gate.ts | 9 + src/{js => ts}/types/gls_navaid.ts | 58 +-- src/ts/types/index.ts | 16 + src/ts/types/math.ts | 15 + src/ts/types/meta.ts | 15 + src/ts/types/ndb_navaid.ts | 15 + src/ts/types/path_point.ts | 31 ++ src/ts/types/procedure.ts | 57 +++ src/{js => ts}/types/runway_threshold.ts | 112 +++--- src/ts/types/vhfnavaid.ts | 17 + src/ts/types/waypoint.ts | 14 + tsconfig.json | 27 ++ 84 files changed, 1320 insertions(+), 1219 deletions(-) create mode 100644 .prettierrc create mode 100644 bun.lockb create mode 100644 eslint.config.mjs create mode 100644 package.json delete mode 100644 src/js/.eslintrc.js delete mode 100644 src/js/index.ts delete mode 100644 src/js/tsconfig.json delete mode 100644 src/js/types/ProcedureLeg/AFLeg.ts delete mode 100644 src/js/types/ProcedureLeg/CALeg.ts delete mode 100644 src/js/types/ProcedureLeg/CFLeg.ts delete mode 100644 src/js/types/ProcedureLeg/DFLeg.ts delete mode 100644 src/js/types/ProcedureLeg/FALeg.ts delete mode 100644 src/js/types/ProcedureLeg/FCLeg.ts delete mode 100644 src/js/types/ProcedureLeg/FDLeg.ts delete mode 100644 src/js/types/ProcedureLeg/FMLeg.ts delete mode 100644 src/js/types/ProcedureLeg/HALeg.ts delete mode 100644 src/js/types/ProcedureLeg/HFLeg.ts delete mode 100644 src/js/types/ProcedureLeg/HMLeg.ts delete mode 100644 src/js/types/ProcedureLeg/IFLeg.ts delete mode 100644 src/js/types/ProcedureLeg/PILeg.ts delete mode 100644 src/js/types/ProcedureLeg/RFLeg.ts delete mode 100644 src/js/types/ProcedureLeg/TFLeg.ts delete mode 100644 src/js/types/ProcedureLeg/VALeg.ts delete mode 100644 src/js/types/ProcedureLeg/VMLeg.ts delete mode 100644 src/js/types/ProcedureLeg/XDLeg.ts delete mode 100644 src/js/types/ProcedureLeg/XILeg.ts delete mode 100644 src/js/types/ProcedureLeg/XRLeg.ts delete mode 100644 src/js/types/airport.ts delete mode 100644 src/js/types/gate.ts delete mode 100644 src/js/types/index.ts delete mode 100644 src/js/types/math.ts delete mode 100644 src/js/types/meta.ts delete mode 100644 src/js/types/ndb_navaid.ts delete mode 100644 src/js/types/path_point.ts delete mode 100644 src/js/types/procedure.ts delete mode 100644 src/js/types/vhfnavaid.ts delete mode 100644 src/js/types/waypoint.ts rename src/{js => ts}/CommBus.d.ts (74%) create mode 100644 src/ts/index.ts rename src/{js => ts}/interface/NavigationDataInterfaceTypes.ts (82%) rename src/{js => ts}/interface/NavigraphNavigationDataInterface.ts (87%) rename src/{js => ts}/package.json (81%) create mode 100644 src/ts/tsconfig.json rename src/{js => ts}/tsup.config.ts (78%) create mode 100644 src/ts/types/ProcedureLeg/AFLeg.ts create mode 100644 src/ts/types/ProcedureLeg/CALeg.ts create mode 100644 src/ts/types/ProcedureLeg/CFLeg.ts create mode 100644 src/ts/types/ProcedureLeg/DFLeg.ts create mode 100644 src/ts/types/ProcedureLeg/FALeg.ts create mode 100644 src/ts/types/ProcedureLeg/FCLeg.ts create mode 100644 src/ts/types/ProcedureLeg/FDLeg.ts create mode 100644 src/ts/types/ProcedureLeg/FMLeg.ts create mode 100644 src/ts/types/ProcedureLeg/HALeg.ts create mode 100644 src/ts/types/ProcedureLeg/HFLeg.ts create mode 100644 src/ts/types/ProcedureLeg/HMLeg.ts create mode 100644 src/ts/types/ProcedureLeg/IFLeg.ts create mode 100644 src/ts/types/ProcedureLeg/PILeg.ts create mode 100644 src/ts/types/ProcedureLeg/RFLeg.ts create mode 100644 src/ts/types/ProcedureLeg/TFLeg.ts create mode 100644 src/ts/types/ProcedureLeg/VALeg.ts create mode 100644 src/ts/types/ProcedureLeg/VMLeg.ts create mode 100644 src/ts/types/ProcedureLeg/XDLeg.ts create mode 100644 src/ts/types/ProcedureLeg/XILeg.ts create mode 100644 src/ts/types/ProcedureLeg/XRLeg.ts rename src/{js => ts}/types/ProcedureLeg/index.ts (51%) create mode 100644 src/ts/types/airport.ts rename src/{js => ts}/types/airspace.ts (54%) rename src/{js => ts}/types/airway.ts (68%) rename src/{js => ts}/types/communication.ts (75%) rename src/{js => ts}/types/database_info.ts (68%) rename src/{js => ts}/types/fix.ts (53%) create mode 100644 src/ts/types/gate.ts rename src/{js => ts}/types/gls_navaid.ts (67%) create mode 100644 src/ts/types/index.ts create mode 100644 src/ts/types/math.ts create mode 100644 src/ts/types/meta.ts create mode 100644 src/ts/types/ndb_navaid.ts create mode 100644 src/ts/types/path_point.ts create mode 100644 src/ts/types/procedure.ts rename src/{js => ts}/types/runway_threshold.ts (66%) create mode 100644 src/ts/types/vhfnavaid.ts create mode 100644 src/ts/types/waypoint.ts create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore index 23c8ec40..29ed42d8 100644 --- a/.gitignore +++ b/.gitignore @@ -12,11 +12,6 @@ example/aircraft/PackageSources/SimObjects/Airplanes/Navigraph_Navigation_Data_I debug/ target/ -# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries -# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html -# Cargo.lock -# Who put this here - # These are backup files generated by rustfmt **/*.rs.bk diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..3dff2abd --- /dev/null +++ b/.prettierrc @@ -0,0 +1,8 @@ +{ + "trailingComma": "all", + "printWidth": 120, + "singleQuote": false, + "arrowParens": "avoid", + "semi": true, + "endOfLine": "auto" +} \ No newline at end of file diff --git a/bun.lockb b/bun.lockb new file mode 100644 index 0000000000000000000000000000000000000000..49476580753ed4282d237b1642e69baf653b44a9 GIT binary patch literal 171392 zcmeFa2V9Qr8~=Z+yG3azRNA7_mf4iFm$Xx~i}o;5DT>I7j3Q)f5@jW+jIuHkiVzAZ zLS+7qqx(9a=lYI^JN;g-|LgaEeb1MxPv?1^@8dYmd5!z-c@*R{Vxyxpe1gL?{KFQ= z`ox9}hC?kR+;@IJaEQNJKzLNBcZ}Ks&A}WD21Cnd(G~qR{i83+#-uMiBib?e>G0N# zD*O|a%kJeylxy98y8~-67$*ny34@mJ=aIkX`8XT<_7!vNoxX8n*X949yuskpx(1!g?}L599Wa zj*STpiDvjmN5=X`EoP`dkgR@*i1LRx_@Uk~sJ9==vEAOj;Zc1Z1LfGBs{*X@4j2$o z$ou*G#0G+&&}j6=U_60x^!F7y0sYy-4?vP4ykmmYAgF~w!M;IIFF4wN5x8Uc26>0f z2i*vbzb0Tk!Oa;m%(VEXw;C`Zl-6x-_svGw_dJodBha901!i&k6g z9U8*$jtY$Mj*9lzfO4$wKZ2#MplJ6!DE1=`zBlwcv1~Z!?5{4Uhw**^#d$OW6#e&Y zB2fRlI;)*WL2*2yHCXizKpr_UO;%i?!C}D>-qF!HP>%g`56ZFr6;QNWqs1!U3X1Xj z!C3bxE;#xSWA6xUBCC`{d?7*JVId#YR;6zd6sDuBM3!eGdQUI)eXR!nIIDAtPwMZeBe z`BW+|11bsS0nz>o{KI0R$^M`K?ZbJtV>+u}#Hseq3y1A1i~;+zPi%0AA0x(;)oyQ4 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

{kvw2 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 declare class CommBusListener extends ViewListener.ViewListener { - callWasm(name: string, jsonBuf: string): void + callWasm(name: string, jsonBuf: string): void; } -declare function RegisterCommBusListener(callback?: () => void): CommBusListener +declare function RegisterCommBusListener(callback?: () => void): CommBusListener; diff --git a/src/ts/index.ts b/src/ts/index.ts new file mode 100644 index 00000000..d38873de --- /dev/null +++ b/src/ts/index.ts @@ -0,0 +1,3 @@ +export * from "./interface/NavigationDataInterfaceTypes"; +export * from "./interface/NavigraphNavigationDataInterface"; +export * from "./types"; diff --git a/src/js/interface/NavigationDataInterfaceTypes.ts b/src/ts/interface/NavigationDataInterfaceTypes.ts similarity index 82% rename from src/js/interface/NavigationDataInterfaceTypes.ts rename to src/ts/interface/NavigationDataInterfaceTypes.ts index 546e9e4b..3e202546 100644 --- a/src/js/interface/NavigationDataInterfaceTypes.ts +++ b/src/ts/interface/NavigationDataInterfaceTypes.ts @@ -1,9 +1,9 @@ -export * from "../types/meta" +export * from "../types/meta"; export interface CommBusMessage { - id: string - resolve: (value?: unknown) => void - reject: (reason: Error) => void + id: string; + resolve: (value?: unknown) => void; + reject: (reason: Error) => void; } export enum NavigraphEventType { @@ -18,10 +18,10 @@ export enum DownloadProgressPhase { } export interface DownloadProgressData { - phase: DownloadProgressPhase - deleted: number | null - total_to_unzip: number | null - unzipped: number | null + phase: DownloadProgressPhase; + deleted: number | null; + total_to_unzip: number | null; + unzipped: number | null; } export enum NavigraphFunction { @@ -62,17 +62,17 @@ export enum FunctionResultStatus { } export interface FunctionResultArgs { - id: string - status: FunctionResultStatus - data: unknown + id: string; + status: FunctionResultStatus; + data: unknown; } export interface Callback { - event: NavigraphEventType - callback: (data: T) => void + event: NavigraphEventType; + callback: (data: T) => void; } export interface RawNavigraphEvent { - event: NavigraphEventType - data: unknown + event: NavigraphEventType; + data: unknown; } diff --git a/src/js/interface/NavigraphNavigationDataInterface.ts b/src/ts/interface/NavigraphNavigationDataInterface.ts similarity index 87% rename from src/js/interface/NavigraphNavigationDataInterface.ts rename to src/ts/interface/NavigraphNavigationDataInterface.ts index 6405effd..4d9ee265 100644 --- a/src/js/interface/NavigraphNavigationDataInterface.ts +++ b/src/ts/interface/NavigraphNavigationDataInterface.ts @@ -17,8 +17,8 @@ import { RunwayThreshold, VhfNavaid, Waypoint, -} from "../types" -import { NavigationDataStatus } from "../types/meta" +} from "../types"; +import { NavigationDataStatus } from "../types/meta"; import { Callback, CommBusMessage, @@ -28,18 +28,18 @@ import { NavigraphEventType, NavigraphFunction, RawNavigraphEvent, -} from "./NavigationDataInterfaceTypes" +} from "./NavigationDataInterfaceTypes"; /** * A TS wrapper class used for interfacing with the Navigraph Navigation Data interface WASM gauge using the CommBus */ export class NavigraphNavigationDataInterface { - private readonly listener: CommBusListener - private queue: CommBusMessage[] = [] - private eventListeners: Callback[] = [] - private onReadyCallback: (() => void) | null = null + private readonly listener: CommBusListener; + private queue: CommBusMessage[] = []; + private eventListeners: Callback[] = []; + private onReadyCallback: (() => void) | null = null; - private isInitialized = false + private isInitialized = false; /** * Creates a new NavigraphNavigationDataInterface @@ -49,8 +49,8 @@ export class NavigraphNavigationDataInterface { */ constructor() { this.listener = RegisterCommBusListener(() => { - this.onRegister() - }) + this.onRegister(); + }); } /** @@ -63,7 +63,7 @@ export class NavigraphNavigationDataInterface { * @returns A promise that resolves with the result of the query */ public async execute_sql(sql: string, params: string[]): Promise { - return await this.callWasmFunction("ExecuteSQLQuery", { sql, params }) + return await this.callWasmFunction("ExecuteSQLQuery", { sql, params }); } /** @@ -73,7 +73,7 @@ export class NavigraphNavigationDataInterface { * @returns A promise that resolves when the download is complete */ public async download_navigation_data(url: string): Promise { - return await this.callWasmFunction("DownloadNavigationData", { url }) + return await this.callWasmFunction("DownloadNavigationData", { url }); } /** @@ -83,7 +83,7 @@ export class NavigraphNavigationDataInterface { * @returns A promise that resolves when the function is complete */ public async set_download_options(batch_size: number): Promise { - return await this.callWasmFunction("SetDownloadOptions", batch_size) + return await this.callWasmFunction("SetDownloadOptions", batch_size); } /** @@ -92,14 +92,14 @@ export class NavigraphNavigationDataInterface { * @returns A promise that resolves with the installation status */ public async get_navigation_data_install_status(): Promise { - return await this.callWasmFunction("GetNavigationDataInstallStatus", {}) + return await this.callWasmFunction("GetNavigationDataInstallStatus", {}); } /** * Gets information about the currently active database */ public async get_database_info(): Promise { - return await this.callWasmFunction("GetDatabaseInfo", {}) + return await this.callWasmFunction("GetDatabaseInfo", {}); } /** @@ -108,7 +108,7 @@ export class NavigraphNavigationDataInterface { * @returns A promise that resolves with the airport data, or rejects if the airport does not exist */ public async get_airport(ident: string): Promise { - return await this.callWasmFunction("GetAirport", { ident }) + return await this.callWasmFunction("GetAirport", { ident }); } /** @@ -117,7 +117,7 @@ export class NavigraphNavigationDataInterface { * @returns A promise that resolves with the list of waypoints */ public async get_waypoints(ident: string): Promise { - return await this.callWasmFunction("GetWaypoints", { ident }) + return await this.callWasmFunction("GetWaypoints", { ident }); } /** @@ -126,7 +126,7 @@ export class NavigraphNavigationDataInterface { * @returns A promise that resolves with the list of vhf navaids */ public async get_vhf_navaids(ident: string): Promise { - return await this.callWasmFunction("GetVhfNavaids", { ident }) + return await this.callWasmFunction("GetVhfNavaids", { ident }); } /** @@ -135,7 +135,7 @@ export class NavigraphNavigationDataInterface { * @returns A promise that resolves with the list of ndb navaids */ public async get_ndb_navaids(ident: string): Promise { - return await this.callWasmFunction("GetNdbNavaids", { ident }) + return await this.callWasmFunction("GetNdbNavaids", { ident }); } /** @@ -144,7 +144,7 @@ export class NavigraphNavigationDataInterface { * @returns A promise that resolves with the list of airways */ public async get_airways(ident: string): Promise { - return await this.callWasmFunction("GetAirways", { ident }) + return await this.callWasmFunction("GetAirways", { ident }); } /** @@ -154,7 +154,7 @@ export class NavigraphNavigationDataInterface { * @returns A promise that resolves with the list of airways */ public async get_airways_at_fix(fix_ident: string, fix_icao_code: string): Promise { - return await this.callWasmFunction("GetAirwaysAtFix", { fix_ident, fix_icao_code }) + return await this.callWasmFunction("GetAirwaysAtFix", { fix_ident, fix_icao_code }); } /** @@ -164,7 +164,7 @@ export class NavigraphNavigationDataInterface { * @returns A promise that resolves with the list of airports */ public async get_airports_in_range(center: Coordinates, range: NauticalMiles): Promise { - return await this.callWasmFunction("GetAirportsInRange", { center, range }) + return await this.callWasmFunction("GetAirportsInRange", { center, range }); } /** @@ -174,7 +174,7 @@ export class NavigraphNavigationDataInterface { * @returns A promise that resolves with the list of waypoints */ public async get_waypoints_in_range(center: Coordinates, range: NauticalMiles): Promise { - return await this.callWasmFunction("GetWaypointsInRange", { center, range }) + return await this.callWasmFunction("GetWaypointsInRange", { center, range }); } /** @@ -184,7 +184,7 @@ export class NavigraphNavigationDataInterface { * @returns A promise that resolves with the list of vhf navaids */ public async get_vhf_navaids_in_range(center: Coordinates, range: NauticalMiles): Promise { - return await this.callWasmFunction("GetVhfNavaidsInRange", { center, range }) + return await this.callWasmFunction("GetVhfNavaidsInRange", { center, range }); } /** @@ -194,7 +194,7 @@ export class NavigraphNavigationDataInterface { * @returns A promise that resolves with the list of ndb navaids */ public async get_ndb_navaids_in_range(center: Coordinates, range: NauticalMiles): Promise { - return await this.callWasmFunction("GetNdbNavaidsInRange", { center, range }) + return await this.callWasmFunction("GetNdbNavaidsInRange", { center, range }); } /** @@ -204,7 +204,7 @@ export class NavigraphNavigationDataInterface { * @returns A promise that resolves with the list of airways */ public async get_airways_in_range(center: Coordinates, range: NauticalMiles): Promise { - return await this.callWasmFunction("GetAirwaysInRange", { center, range }) + return await this.callWasmFunction("GetAirwaysInRange", { center, range }); } /** @@ -217,7 +217,7 @@ export class NavigraphNavigationDataInterface { center: Coordinates, range: NauticalMiles, ): Promise { - return await this.callWasmFunction("GetControlledAirspacesInRange", { center, range }) + return await this.callWasmFunction("GetControlledAirspacesInRange", { center, range }); } /** @@ -230,7 +230,7 @@ export class NavigraphNavigationDataInterface { center: Coordinates, range: NauticalMiles, ): Promise { - return await this.callWasmFunction("GetRestrictiveAirspacesInRange", { center, range }) + return await this.callWasmFunction("GetRestrictiveAirspacesInRange", { center, range }); } /** @@ -240,7 +240,7 @@ export class NavigraphNavigationDataInterface { * @returns A promise that resolves with the list of communications */ public async get_communications_in_range(center: Coordinates, range: NauticalMiles): Promise { - return await this.callWasmFunction("GetCommunicationsInRange", { center, range }) + return await this.callWasmFunction("GetCommunicationsInRange", { center, range }); } /** @@ -249,7 +249,7 @@ export class NavigraphNavigationDataInterface { * @returns A promise that resolves with the list of runways */ public async get_runways_at_airport(airport_ident: string): Promise { - return await this.callWasmFunction("GetRunwaysAtAirport", { airport_ident }) + return await this.callWasmFunction("GetRunwaysAtAirport", { airport_ident }); } /** @@ -258,7 +258,7 @@ export class NavigraphNavigationDataInterface { * @returns A promise that resolves with the list of departures */ public async get_departures_at_airport(airport_ident: string): Promise { - return await this.callWasmFunction("GetDeparturesAtAirport", { airport_ident }) + return await this.callWasmFunction("GetDeparturesAtAirport", { airport_ident }); } /** @@ -267,7 +267,7 @@ export class NavigraphNavigationDataInterface { * @returns A promise that resolves with the list of arrivals */ public async get_arrivals_at_airport(airport_ident: string): Promise { - return await this.callWasmFunction("GetArrivalsAtAirport", { airport_ident }) + return await this.callWasmFunction("GetArrivalsAtAirport", { airport_ident }); } /** @@ -276,7 +276,7 @@ export class NavigraphNavigationDataInterface { * @returns A promise that resolves with the list of approaches */ public async get_approaches_at_airport(airport_ident: string): Promise { - return await this.callWasmFunction("GetApproachesAtAirport", { airport_ident }) + return await this.callWasmFunction("GetApproachesAtAirport", { airport_ident }); } /** @@ -285,7 +285,7 @@ export class NavigraphNavigationDataInterface { * @returns A promise that resolves with the list of waypoints */ public async get_waypoints_at_airport(airport_ident: string): Promise { - return await this.callWasmFunction("GetWaypointsAtAirport", { airport_ident }) + return await this.callWasmFunction("GetWaypointsAtAirport", { airport_ident }); } /** @@ -294,7 +294,7 @@ export class NavigraphNavigationDataInterface { * @returns A promise that resolves with the list of ndb navaids */ public async get_ndb_navaids_at_airport(airport_ident: string): Promise { - return await this.callWasmFunction("GetNdbNavaidsAtAirport", { airport_ident }) + return await this.callWasmFunction("GetNdbNavaidsAtAirport", { airport_ident }); } /** @@ -303,7 +303,7 @@ export class NavigraphNavigationDataInterface { * @returns A promise that resolves with the list of gates */ public async get_gates_at_airport(airport_ident: string): Promise { - return await this.callWasmFunction("GetGatesAtAirport", { airport_ident }) + return await this.callWasmFunction("GetGatesAtAirport", { airport_ident }); } /** @@ -312,7 +312,7 @@ export class NavigraphNavigationDataInterface { * @returns A promise that resolves with the list of communications */ public async get_communications_at_airport(airport_ident: string): Promise { - return await this.callWasmFunction("GetCommunicationsAtAirport", { airport_ident }) + return await this.callWasmFunction("GetCommunicationsAtAirport", { airport_ident }); } /** @@ -321,7 +321,7 @@ export class NavigraphNavigationDataInterface { * @returns A promise that resolves with the list of gls navaids */ public async get_gls_navaids_at_airport(airport_ident: string): Promise { - return await this.callWasmFunction("GetGlsNavaidsAtAirport", { airport_ident }) + return await this.callWasmFunction("GetGlsNavaidsAtAirport", { airport_ident }); } /** @@ -330,7 +330,7 @@ export class NavigraphNavigationDataInterface { * @returns A promise that resolves with the list of path points */ public async get_path_points_at_airport(airport_ident: string): Promise { - return await this.callWasmFunction("GetPathPointsAtAirport", { airport_ident }) + return await this.callWasmFunction("GetPathPointsAtAirport", { airport_ident }); } /** @@ -342,26 +342,22 @@ export class NavigraphNavigationDataInterface { */ private async callWasmFunction(name: keyof typeof NavigraphFunction, data: unknown): Promise { if (!this.isInitialized) { - throw new Error("Interface is not initialized") + throw new Error("Interface is not initialized"); } - const id = Utils.generateGUID() + const id = Utils.generateGUID(); - const args = { - function: name, - id, - data, - } + const args = { function: name, id, data }; - this.listener.callWasm("NAVIGRAPH_CallFunction", JSON.stringify(args)) + this.listener.callWasm("NAVIGRAPH_CallFunction", JSON.stringify(args)); return new Promise((resolve, reject) => { this.queue.push({ id, resolve: (response: unknown) => resolve(response as T), reject: (error: Error) => reject(error), - }) - }) + }); + }); } /** @@ -369,43 +365,43 @@ export class NavigraphNavigationDataInterface { */ private onRegister(): void { this.listener.on("NAVIGRAPH_FunctionResult", (jsonArgs: string) => { - const args = JSON.parse(jsonArgs) as FunctionResultArgs - const id = args.id + const args = JSON.parse(jsonArgs) as FunctionResultArgs; + const id = args.id; // Find the function call in the queue and resolve/reject it - const message = this.queue.find(m => m.id === id) + const message = this.queue.find(m => m.id === id); if (message) { - this.queue.splice(this.queue.indexOf(message), 1) - const data = args.data + this.queue.splice(this.queue.indexOf(message), 1); + const data = args.data; if (args.status === FunctionResultStatus.Success) { - message.resolve(data) + message.resolve(data); } else { - message.reject(new Error(typeof data === "string" ? data : "Unknown error")) + message.reject(new Error(typeof data === "string" ? data : "Unknown error")); } } - }) + }); this.listener.on("NAVIGRAPH_Event", (jsonArgs: string) => { - const args = JSON.parse(jsonArgs) as RawNavigraphEvent + const args = JSON.parse(jsonArgs) as RawNavigraphEvent; // If this is the heartbeat event, set the interface as initialized if (args.event === NavigraphEventType.Heartbeat && !this.isInitialized) { - this.isInitialized = true + this.isInitialized = true; if (this.onReadyCallback) { - this.onReadyCallback() + this.onReadyCallback(); } } // Call all callbacks for the event if (args.event in NavigraphEventType) { - const callbacks = this.eventListeners.filter(cb => cb.event === args.event) - callbacks.forEach(cb => cb.callback(args.data)) + const callbacks = this.eventListeners.filter(cb => cb.event === args.event); + callbacks.forEach(cb => cb.callback(args.data)); } - }) + }); } - public onEvent(event: NavigraphEventType.Heartbeat, callback: () => void): void - public onEvent(event: NavigraphEventType.DownloadProgress, callback: (data: DownloadProgressData) => void): void + public onEvent(event: NavigraphEventType.Heartbeat, callback: () => void): void; + public onEvent(event: NavigraphEventType.DownloadProgress, callback: (data: DownloadProgressData) => void): void; /** * Registers a callback to be called when an event is received @@ -414,11 +410,8 @@ export class NavigraphNavigationDataInterface { * @param callback - Callback to be called when the event is received */ public onEvent(event: NavigraphEventType, callback: (data: T) => void): void { - const cb: Callback = { - event, - callback, - } - this.eventListeners.push(cb as Callback) + const cb: Callback = { event, callback }; + this.eventListeners.push(cb as Callback); } /** @@ -427,7 +420,7 @@ export class NavigraphNavigationDataInterface { * @param callback - Callback to be called when the interface is ready */ public onReady(callback: () => void): void { - this.onReadyCallback = callback + this.onReadyCallback = callback; } /** @@ -436,6 +429,6 @@ export class NavigraphNavigationDataInterface { * @returns Whether the interface is ready */ public getIsInitialized(): boolean { - return this.isInitialized + return this.isInitialized; } } diff --git a/src/js/package.json b/src/ts/package.json similarity index 81% rename from src/js/package.json rename to src/ts/package.json index 608fc7d0..53d6f6dc 100644 --- a/src/js/package.json +++ b/src/ts/package.json @@ -1,24 +1,29 @@ -{ - "name": "@navigraph/msfs-navigation-data-interface", - "version": "1.1.1", - "description": "JS interface that facilitates interactions with the Navigraph WASM navigation data module.", - "homepage": "https://navigraph.com", - "main": "dist/msfs-navigation-data-interface.mjs", - "typings": "dist/msfs-navigation-data-interface.d.mts", - "repository": { - "type": "git", - "url": "git+https://github.com/Navigraph/msfs-navigation-data-interface.git" - }, - "publishConfig": { - "access": "public" - }, - "author": "Navigraph", - "license": "MIT", - "files": [ - "package.json", - "dist/**" - ], - "scripts": { - "build": "tsup" - } -} +{ + "name": "@navigraph/msfs-navigation-data-interface", + "version": "1.1.1", + "description": "JS interface that facilitates interactions with the Navigraph WASM navigation data module.", + "homepage": "https://navigraph.com", + "main": "dist/msfs-navigation-data-interface.mjs", + "typings": "dist/msfs-navigation-data-interface.d.mts", + "repository": { + "type": "git", + "url": "git+https://github.com/Navigraph/msfs-navigation-data-interface.git" + }, + "publishConfig": { + "access": "public" + }, + "author": "Navigraph", + "license": "MIT", + "files": [ + "package.json", + "dist/**" + ], + "scripts": { + "build": "tsup", + "lint": "eslint . --ext .ts" + }, + "devDependencies": { + "@microsoft/msfs-types": "^1.14.6", + "tsup": "^8.4.0" + } +} diff --git a/src/ts/tsconfig.json b/src/ts/tsconfig.json new file mode 100644 index 00000000..4096abe1 --- /dev/null +++ b/src/ts/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "es6", + "module": "commonjs", + "moduleResolution": "node", + "esModuleInterop": true, + "resolveJsonModule": true, + "declaration": true, + "noEmit": true, + }, + "include": ["**/*.ts"], + "exclude": ["**/node_modules"] +} \ No newline at end of file diff --git a/src/js/tsup.config.ts b/src/ts/tsup.config.ts similarity index 78% rename from src/js/tsup.config.ts rename to src/ts/tsup.config.ts index 24250f74..6fa60e6f 100644 --- a/src/js/tsup.config.ts +++ b/src/ts/tsup.config.ts @@ -1,4 +1,4 @@ -import { defineConfig } from "tsup" +import { defineConfig } from "tsup"; export default defineConfig({ clean: true, @@ -6,4 +6,4 @@ export default defineConfig({ format: "esm", target: "es6", dts: true, -}) +}); diff --git a/src/ts/types/ProcedureLeg/AFLeg.ts b/src/ts/types/ProcedureLeg/AFLeg.ts new file mode 100644 index 00000000..6b7a291d --- /dev/null +++ b/src/ts/types/ProcedureLeg/AFLeg.ts @@ -0,0 +1,19 @@ +import { LegType, ProcedureLegBase, TurnDirection } from "."; +import { Fix } from "../fix"; +import { Degrees, NauticalMiles } from "../math"; + +export interface AFLegData extends ProcedureLegBase { + leg_type: LegType.AF; + + fix: Fix; + + turn_direction: TurnDirection; + + recommended_navaid: Fix; + + theta: Degrees; + + rho: NauticalMiles; + + course: Degrees; +} diff --git a/src/ts/types/ProcedureLeg/CALeg.ts b/src/ts/types/ProcedureLeg/CALeg.ts new file mode 100644 index 00000000..aca378d8 --- /dev/null +++ b/src/ts/types/ProcedureLeg/CALeg.ts @@ -0,0 +1,16 @@ +import { AltitudeDescriptor, LegType, ProcedureLegBase, TurnDirection } from "."; +import { Degrees, Feet } from "../math"; + +export interface CALegData extends ProcedureLegBase { + leg_type: LegType.CA; + + turn_direction?: TurnDirection; + + course: Degrees; + + altitude: { + altitude1: Feet; + + descriptor: AltitudeDescriptor.AtOrAboveAlt1; + }; +} diff --git a/src/ts/types/ProcedureLeg/CFLeg.ts b/src/ts/types/ProcedureLeg/CFLeg.ts new file mode 100644 index 00000000..c22c00e0 --- /dev/null +++ b/src/ts/types/ProcedureLeg/CFLeg.ts @@ -0,0 +1,21 @@ +import { LegType, ProcedureLegBase, TurnDirection } from "."; +import { Fix } from "../fix"; +import { Degrees, NauticalMiles } from "../math"; + +export interface CFLegData extends ProcedureLegBase { + leg_type: LegType.CF; + + fix: Fix; + + recommended_navaid: Fix; + + turn_direction?: TurnDirection; + + theta: Degrees; + + rho: NauticalMiles; + + course: Degrees; + + length: NauticalMiles; +} diff --git a/src/ts/types/ProcedureLeg/DFLeg.ts b/src/ts/types/ProcedureLeg/DFLeg.ts new file mode 100644 index 00000000..c9404df4 --- /dev/null +++ b/src/ts/types/ProcedureLeg/DFLeg.ts @@ -0,0 +1,17 @@ +import { LegType, ProcedureLegBase, TurnDirection } from "."; +import { Fix } from "../fix"; +import { Degrees, NauticalMiles } from "../math"; + +export interface DFLegData extends ProcedureLegBase { + leg_type: LegType.DF; + + fix: Fix; + + turn_direction?: TurnDirection; + + recommended_navaid?: Fix; + + theta?: Degrees; + + rho?: NauticalMiles; +} diff --git a/src/ts/types/ProcedureLeg/FALeg.ts b/src/ts/types/ProcedureLeg/FALeg.ts new file mode 100644 index 00000000..7c37c529 --- /dev/null +++ b/src/ts/types/ProcedureLeg/FALeg.ts @@ -0,0 +1,25 @@ +import { AltitudeDescriptor, LegType, ProcedureLegBase, TurnDirection } from "."; +import { Fix } from "../fix"; +import { Degrees, Feet, NauticalMiles } from "../math"; + +export interface FALegData extends ProcedureLegBase { + leg_type: LegType.FA; + + fix: Fix; + + recommended_navaid: Fix; + + turn_direction?: TurnDirection; + + theta: Degrees; + + rho: NauticalMiles; + + course: Degrees; + + altitude: { + altitude1: Feet; + + descriptor: AltitudeDescriptor.AtOrAboveAlt1; + }; +} diff --git a/src/ts/types/ProcedureLeg/FCLeg.ts b/src/ts/types/ProcedureLeg/FCLeg.ts new file mode 100644 index 00000000..5ff40f2f --- /dev/null +++ b/src/ts/types/ProcedureLeg/FCLeg.ts @@ -0,0 +1,21 @@ +import { LegType, ProcedureLegBase, TurnDirection } from "."; +import { Fix } from "../fix"; +import { Degrees, NauticalMiles } from "../math"; + +export interface FCLegData extends ProcedureLegBase { + leg_type: LegType.FC; + + fix: Fix; + + recommended_navaid: Fix; + + turn_direction?: TurnDirection; + + theta: Degrees; + + rho: NauticalMiles; + + course: Degrees; + + length: NauticalMiles; +} diff --git a/src/ts/types/ProcedureLeg/FDLeg.ts b/src/ts/types/ProcedureLeg/FDLeg.ts new file mode 100644 index 00000000..c3a384ba --- /dev/null +++ b/src/ts/types/ProcedureLeg/FDLeg.ts @@ -0,0 +1,21 @@ +import { LegType, ProcedureLegBase, TurnDirection } from "."; +import { Fix } from "../fix"; +import { Degrees, NauticalMiles } from "../math"; + +export interface FDLegData extends ProcedureLegBase { + leg_type: LegType.FD; + + fix: Fix; + + turn_direction?: TurnDirection; + + recommended_navaid: Fix; + + theta?: Degrees; + + rho: NauticalMiles; + + course: Degrees; + + length: NauticalMiles; +} diff --git a/src/ts/types/ProcedureLeg/FMLeg.ts b/src/ts/types/ProcedureLeg/FMLeg.ts new file mode 100644 index 00000000..c6ed6140 --- /dev/null +++ b/src/ts/types/ProcedureLeg/FMLeg.ts @@ -0,0 +1,19 @@ +import { LegType, ProcedureLegBase, TurnDirection } from "."; +import { Fix } from "../fix"; +import { Degrees, NauticalMiles } from "../math"; + +export interface FMLegData extends ProcedureLegBase { + leg_type: LegType.FM; + + fix: Fix; + + recommended_navaid: Fix; + + turn_direction?: TurnDirection; + + theta: Degrees; + + rho: NauticalMiles; + + course: Degrees; +} diff --git a/src/ts/types/ProcedureLeg/HALeg.ts b/src/ts/types/ProcedureLeg/HALeg.ts new file mode 100644 index 00000000..a6d64bec --- /dev/null +++ b/src/ts/types/ProcedureLeg/HALeg.ts @@ -0,0 +1,27 @@ +import { AltitudeDescriptor, LegType, ProcedureLegBase, TurnDirection } from "."; +import { Fix } from "../fix"; +import { Degrees, Feet, Minutes, NauticalMiles } from "../math"; + +export interface HALegData extends ProcedureLegBase { + leg_type: LegType.HA; + + fix: Fix; + + turn_direction: TurnDirection; + + theta?: Degrees; + + rho?: NauticalMiles; + + course: Degrees; + + length?: NauticalMiles; + + length_time?: Minutes; + + altitude: { + altitude1: Feet; + + descriptor: AltitudeDescriptor.AtOrAboveAlt1; + }; +} diff --git a/src/ts/types/ProcedureLeg/HFLeg.ts b/src/ts/types/ProcedureLeg/HFLeg.ts new file mode 100644 index 00000000..8b9d5378 --- /dev/null +++ b/src/ts/types/ProcedureLeg/HFLeg.ts @@ -0,0 +1,21 @@ +import { LegType, ProcedureLegBase, TurnDirection } from "."; +import { Fix } from "../fix"; +import { Degrees, Minutes, NauticalMiles } from "../math"; + +export interface HFLegData extends ProcedureLegBase { + leg_type: LegType.HF; + + fix: Fix; + + turn_direction: TurnDirection; + + theta?: Degrees; + + rho?: NauticalMiles; + + course: Degrees; + + length?: NauticalMiles; + + length_time?: Minutes; +} diff --git a/src/ts/types/ProcedureLeg/HMLeg.ts b/src/ts/types/ProcedureLeg/HMLeg.ts new file mode 100644 index 00000000..05f9dd6e --- /dev/null +++ b/src/ts/types/ProcedureLeg/HMLeg.ts @@ -0,0 +1,21 @@ +import { LegType, ProcedureLegBase, TurnDirection } from "."; +import { Fix } from "../fix"; +import { Degrees, Minutes, NauticalMiles } from "../math"; + +export interface HMLegData extends ProcedureLegBase { + leg_type: LegType.HM; + + fix: Fix; + + turn_direction: TurnDirection; + + theta?: Degrees; + + rho?: NauticalMiles; + + course: Degrees; + + length?: NauticalMiles; + + length_time?: Minutes; +} diff --git a/src/ts/types/ProcedureLeg/IFLeg.ts b/src/ts/types/ProcedureLeg/IFLeg.ts new file mode 100644 index 00000000..83fd5421 --- /dev/null +++ b/src/ts/types/ProcedureLeg/IFLeg.ts @@ -0,0 +1,15 @@ +import { LegType, ProcedureLegBase } from "."; +import { Fix } from "../fix"; +import { Degrees, NauticalMiles } from "../math"; + +export interface IFLegData extends ProcedureLegBase { + leg_type: LegType.IF; + + fix: Fix; + + recommended_navaid?: Fix; + + theta?: Degrees; + + rho?: NauticalMiles; +} diff --git a/src/ts/types/ProcedureLeg/PILeg.ts b/src/ts/types/ProcedureLeg/PILeg.ts new file mode 100644 index 00000000..d2500bb3 --- /dev/null +++ b/src/ts/types/ProcedureLeg/PILeg.ts @@ -0,0 +1,21 @@ +import { LegType, ProcedureLegBase, TurnDirection } from "."; +import { Fix } from "../fix"; +import { Degrees, NauticalMiles } from "../math"; + +export interface PILegData extends ProcedureLegBase { + leg_type: LegType.PI; + + fix: Fix; + + recommended_navaid: Fix; + + turn_direction: TurnDirection; + + theta: Degrees; + + rho: NauticalMiles; + + course: Degrees; + + length: NauticalMiles; +} diff --git a/src/ts/types/ProcedureLeg/RFLeg.ts b/src/ts/types/ProcedureLeg/RFLeg.ts new file mode 100644 index 00000000..41af950b --- /dev/null +++ b/src/ts/types/ProcedureLeg/RFLeg.ts @@ -0,0 +1,23 @@ +import { LegType, ProcedureLegBase, TurnDirection } from "."; +import { Fix } from "../fix"; +import { Degrees, NauticalMiles } from "../math"; + +export interface RFLegData extends ProcedureLegBase { + leg_type: LegType.RF; + + fix: Fix; + + turn_direction: TurnDirection; + + recommended_navaid?: Fix; + + theta?: Degrees; + + course?: Degrees; + + length: NauticalMiles; + + arc_center_fix: Fix; + + arc_radius: NauticalMiles; +} diff --git a/src/ts/types/ProcedureLeg/TFLeg.ts b/src/ts/types/ProcedureLeg/TFLeg.ts new file mode 100644 index 00000000..832b346d --- /dev/null +++ b/src/ts/types/ProcedureLeg/TFLeg.ts @@ -0,0 +1,23 @@ +import { LegType, ProcedureLegBase, TurnDirection } from "."; +import { Fix } from "../fix"; +import { Degrees, Minutes, NauticalMiles } from "../math"; + +export interface TFLegData extends ProcedureLegBase { + leg_type: LegType.TF; + + fix: Fix; + + turn_direction?: TurnDirection; + + recommended_navaid?: Fix; + + theta?: Degrees; + + rho?: NauticalMiles; + + course?: Degrees; + + length?: NauticalMiles; + + length_time?: Minutes; +} diff --git a/src/ts/types/ProcedureLeg/VALeg.ts b/src/ts/types/ProcedureLeg/VALeg.ts new file mode 100644 index 00000000..8349aad7 --- /dev/null +++ b/src/ts/types/ProcedureLeg/VALeg.ts @@ -0,0 +1,16 @@ +import { AltitudeDescriptor, LegType, ProcedureLegBase, TurnDirection } from "."; +import { Degrees, Feet } from "../math"; + +export interface VALegData extends ProcedureLegBase { + leg_type: LegType.VA; + + turn_direction?: TurnDirection; + + course: Degrees; + + altitude: { + altitude1: Feet; + + descriptor: AltitudeDescriptor.AtOrAboveAlt1; + }; +} diff --git a/src/ts/types/ProcedureLeg/VMLeg.ts b/src/ts/types/ProcedureLeg/VMLeg.ts new file mode 100644 index 00000000..ea5f2e9f --- /dev/null +++ b/src/ts/types/ProcedureLeg/VMLeg.ts @@ -0,0 +1,10 @@ +import { LegType, ProcedureLegBase, TurnDirection } from "."; +import { Degrees } from "../math"; + +export interface VMLegData extends ProcedureLegBase { + leg_type: LegType.VM; + + turn_direction?: TurnDirection; + + course: Degrees; +} diff --git a/src/ts/types/ProcedureLeg/XDLeg.ts b/src/ts/types/ProcedureLeg/XDLeg.ts new file mode 100644 index 00000000..5afeed5d --- /dev/null +++ b/src/ts/types/ProcedureLeg/XDLeg.ts @@ -0,0 +1,15 @@ +import { LegType, ProcedureLegBase, TurnDirection } from "."; +import { Fix } from "../fix"; +import { Degrees, NauticalMiles } from "../math"; + +export interface XDLegData extends ProcedureLegBase { + leg_type: LegType.CD | LegType.VD; + + turn_direction?: TurnDirection; + + recommended_navaid: Fix; + + course: Degrees; + + length: NauticalMiles; +} diff --git a/src/ts/types/ProcedureLeg/XILeg.ts b/src/ts/types/ProcedureLeg/XILeg.ts new file mode 100644 index 00000000..0b572f4d --- /dev/null +++ b/src/ts/types/ProcedureLeg/XILeg.ts @@ -0,0 +1,13 @@ +import { LegType, ProcedureLegBase, TurnDirection } from "."; +import { Fix } from "../fix"; +import { Degrees } from "../math"; + +export interface XILegData extends ProcedureLegBase { + leg_type: LegType.CI | LegType.VI; + + turn_direction?: TurnDirection; + + recommended_navaid?: Fix; + + course: Degrees; +} diff --git a/src/ts/types/ProcedureLeg/XRLeg.ts b/src/ts/types/ProcedureLeg/XRLeg.ts new file mode 100644 index 00000000..cfe32039 --- /dev/null +++ b/src/ts/types/ProcedureLeg/XRLeg.ts @@ -0,0 +1,17 @@ +import { LegType, ProcedureLegBase, TurnDirection } from "."; +import { Fix } from "../fix"; +import { Degrees, NauticalMiles } from "../math"; + +export interface XRLegData extends ProcedureLegBase { + leg_type: LegType.CR | LegType.VR; + + turn_direction?: TurnDirection; + + recommended_navaid: Fix; + + theta: Degrees; + + rho: NauticalMiles; + + course: Degrees; +} diff --git a/src/js/types/ProcedureLeg/index.ts b/src/ts/types/ProcedureLeg/index.ts similarity index 51% rename from src/js/types/ProcedureLeg/index.ts rename to src/ts/types/ProcedureLeg/index.ts index c6b0053c..62572adf 100644 --- a/src/js/types/ProcedureLeg/index.ts +++ b/src/ts/types/ProcedureLeg/index.ts @@ -1,184 +1,184 @@ -import { Degrees, Feet, Knots, NauticalMiles } from "../math" -import { AFLegData } from "./AFLeg" -import { CALegData } from "./CALeg" -import { CFLegData } from "./CFLeg" -import { DFLegData } from "./DFLeg" -import { FALegData } from "./FALeg" -import { FCLegData } from "./FCLeg" -import { FDLegData } from "./FDLeg" -import { FMLegData } from "./FMLeg" -import { HALegData } from "./HALeg" -import { HFLegData } from "./HFLeg" -import { HMLegData } from "./HMLeg" -import { IFLegData } from "./IFLeg" -import { PILegData } from "./PILeg" -import { RFLegData } from "./RFLeg" -import { TFLegData } from "./TFLeg" -import { VALegData } from "./VALeg" -import { VMLegData } from "./VMLeg" -import { XDLegData } from "./XDLeg" -import { XILegData } from "./XILeg" -import { XRLegData } from "./XRLeg" - -export enum LegType { - AF = "AF", - CA = "CA", - CD = "CD", - CF = "CF", - CI = "CI", - CR = "CR", - DF = "DF", - FA = "FA", - FC = "FC", - FD = "FD", - FM = "FM", - HA = "HA", - HF = "HF", - HM = "HM", - IF = "IF", - PI = "PI", - RF = "RF", - TF = "TF", - VA = "VA", - VD = "VD", - VI = "VI", - VM = "VM", - VR = "VR", -} - -export enum TurnDirection { - Left = "L", - Right = "R", -} - -export enum AltitudeDescriptor { - AtAlt1 = "@", - AtOrAboveAlt1 = "+", - AtOrBelowAlt1 = "-", - BetweenAlt1Alt2 = "B", - AtOrAboveAlt2 = "C", - AtAlt1GsMslAlt2 = "G", - AtOrAboveAlt1GsMslAlt2 = "H", - AtAlt1GsInterceptAlt2 = "I", - AtOrAboveAlt1GsInterceptAlt2 = "J", - AtOrAboveAlt1AngleAlt2 = "V", - AtAlt1AngleAlt2 = "X", - AtOrBelowAlt1AngleAlt2 = "Y", -} - -export enum SpeedDescriptor { - Mandatory = "@", - Minimum = "+", - Maximum = "-", -} - -export type AltitudeConstraint = - | { - altitude1: Feet - altitude2?: Feet - descriptor: AltitudeDescriptor.AtAlt1 | AltitudeDescriptor.AtOrAboveAlt1 | AltitudeDescriptor.AtOrBelowAlt1 - } - | { - altitude1: Feet - altitude2: Feet - descriptor: - | AltitudeDescriptor.BetweenAlt1Alt2 - | AltitudeDescriptor.AtOrAboveAlt2 - | AltitudeDescriptor.AtAlt1GsMslAlt2 - | AltitudeDescriptor.AtOrAboveAlt1GsMslAlt2 - | AltitudeDescriptor.AtAlt1GsInterceptAlt2 - | AltitudeDescriptor.AtOrAboveAlt1GsInterceptAlt2 - | AltitudeDescriptor.AtOrAboveAlt1AngleAlt2 - | AltitudeDescriptor.AtAlt1AngleAlt2 - | AltitudeDescriptor.AtOrBelowAlt1AngleAlt2 - } - -export interface SpeedConstraint { - value: Knots - descriptor: SpeedDescriptor -} - -export enum RequiresAuthentication { - Authorized = "Y", - NotAuthorized = "N", -} - -export enum GnssFmsIndication { - NotAuthorized = "0", - GnssMonitored = "1", - GnssNotMonitored = "2", - GnssAuthorized = "3", - FmsAuthorized = "4", - GnssFmsAuthorized = "5", - RnavSbasAuthorized = "A", - RnavSbasNotAuthorized = "B", - RnavSbasUnspecified = "C", - GpsProcedure = "D", - Unspecified = "U", -} - -export interface ProcedureAuthorization { - authorized: Authorized - name: string -} - -export enum Authorized { - Authorized = "A", - NotAuthorized = "N", -} - -export interface ProcedureLegBase { - overfly: boolean - - altitude?: AltitudeConstraint - - speed?: SpeedConstraint - - vertical_angle?: Degrees - - rnp?: NauticalMiles - - // I'm not sure what types of legs these are in so it'll be here until I have more info - ra?: RequiresAuthentication - - gnss_fms_indication?: GnssFmsIndication - - lnav_authorized?: ProcedureAuthorization - - lnav_vnav_authorized?: ProcedureAuthorization -} - -export type HXLegData = HALegData | HFLegData | HMLegData -export type XFLegData = AFLegData | CFLegData | DFLegData | IFLegData | RFLegData | TFLegData | HXLegData -export type FXLegData = FALegData | FCLegData | FMLegData | FDLegData -export type ProcedureLeg = - | XFLegData - | FXLegData - | CALegData - | XILegData - | XDLegData - | VALegData - | VMLegData - | XRLegData - | PILegData - -export * from "./AFLeg" -export * from "./CALeg" -export * from "./CFLeg" -export * from "./DFLeg" -export * from "./FALeg" -export * from "./FCLeg" -export * from "./FDLeg" -export * from "./FMLeg" -export * from "./HALeg" -export * from "./HFLeg" -export * from "./HMLeg" -export * from "./IFLeg" -export * from "./PILeg" -export * from "./RFLeg" -export * from "./TFLeg" -export * from "./VALeg" -export * from "./VMLeg" -export * from "./XDLeg" -export * from "./XILeg" -export * from "./XRLeg" +import { Degrees, Feet, Knots, NauticalMiles } from "../math"; +import { AFLegData } from "./AFLeg"; +import { CALegData } from "./CALeg"; +import { CFLegData } from "./CFLeg"; +import { DFLegData } from "./DFLeg"; +import { FALegData } from "./FALeg"; +import { FCLegData } from "./FCLeg"; +import { FDLegData } from "./FDLeg"; +import { FMLegData } from "./FMLeg"; +import { HALegData } from "./HALeg"; +import { HFLegData } from "./HFLeg"; +import { HMLegData } from "./HMLeg"; +import { IFLegData } from "./IFLeg"; +import { PILegData } from "./PILeg"; +import { RFLegData } from "./RFLeg"; +import { TFLegData } from "./TFLeg"; +import { VALegData } from "./VALeg"; +import { VMLegData } from "./VMLeg"; +import { XDLegData } from "./XDLeg"; +import { XILegData } from "./XILeg"; +import { XRLegData } from "./XRLeg"; + +export enum LegType { + AF = "AF", + CA = "CA", + CD = "CD", + CF = "CF", + CI = "CI", + CR = "CR", + DF = "DF", + FA = "FA", + FC = "FC", + FD = "FD", + FM = "FM", + HA = "HA", + HF = "HF", + HM = "HM", + IF = "IF", + PI = "PI", + RF = "RF", + TF = "TF", + VA = "VA", + VD = "VD", + VI = "VI", + VM = "VM", + VR = "VR", +} + +export enum TurnDirection { + Left = "L", + Right = "R", +} + +export enum AltitudeDescriptor { + AtAlt1 = "@", + AtOrAboveAlt1 = "+", + AtOrBelowAlt1 = "-", + BetweenAlt1Alt2 = "B", + AtOrAboveAlt2 = "C", + AtAlt1GsMslAlt2 = "G", + AtOrAboveAlt1GsMslAlt2 = "H", + AtAlt1GsInterceptAlt2 = "I", + AtOrAboveAlt1GsInterceptAlt2 = "J", + AtOrAboveAlt1AngleAlt2 = "V", + AtAlt1AngleAlt2 = "X", + AtOrBelowAlt1AngleAlt2 = "Y", +} + +export enum SpeedDescriptor { + Mandatory = "@", + Minimum = "+", + Maximum = "-", +} + +export type AltitudeConstraint = + | { + altitude1: Feet; + altitude2?: Feet; + descriptor: AltitudeDescriptor.AtAlt1 | AltitudeDescriptor.AtOrAboveAlt1 | AltitudeDescriptor.AtOrBelowAlt1; + } + | { + altitude1: Feet; + altitude2: Feet; + descriptor: + | AltitudeDescriptor.BetweenAlt1Alt2 + | AltitudeDescriptor.AtOrAboveAlt2 + | AltitudeDescriptor.AtAlt1GsMslAlt2 + | AltitudeDescriptor.AtOrAboveAlt1GsMslAlt2 + | AltitudeDescriptor.AtAlt1GsInterceptAlt2 + | AltitudeDescriptor.AtOrAboveAlt1GsInterceptAlt2 + | AltitudeDescriptor.AtOrAboveAlt1AngleAlt2 + | AltitudeDescriptor.AtAlt1AngleAlt2 + | AltitudeDescriptor.AtOrBelowAlt1AngleAlt2; + }; + +export interface SpeedConstraint { + value: Knots; + descriptor: SpeedDescriptor; +} + +export enum RequiresAuthentication { + Authorized = "Y", + NotAuthorized = "N", +} + +export enum GnssFmsIndication { + NotAuthorized = "0", + GnssMonitored = "1", + GnssNotMonitored = "2", + GnssAuthorized = "3", + FmsAuthorized = "4", + GnssFmsAuthorized = "5", + RnavSbasAuthorized = "A", + RnavSbasNotAuthorized = "B", + RnavSbasUnspecified = "C", + GpsProcedure = "D", + Unspecified = "U", +} + +export interface ProcedureAuthorization { + authorized: Authorized; + name: string; +} + +export enum Authorized { + Authorized = "A", + NotAuthorized = "N", +} + +export interface ProcedureLegBase { + overfly: boolean; + + altitude?: AltitudeConstraint; + + speed?: SpeedConstraint; + + vertical_angle?: Degrees; + + rnp?: NauticalMiles; + + // I'm not sure what types of legs these are in so it'll be here until I have more info + ra?: RequiresAuthentication; + + gnss_fms_indication?: GnssFmsIndication; + + lnav_authorized?: ProcedureAuthorization; + + lnav_vnav_authorized?: ProcedureAuthorization; +} + +export type HXLegData = HALegData | HFLegData | HMLegData; +export type XFLegData = AFLegData | CFLegData | DFLegData | IFLegData | RFLegData | TFLegData | HXLegData; +export type FXLegData = FALegData | FCLegData | FMLegData | FDLegData; +export type ProcedureLeg = + | XFLegData + | FXLegData + | CALegData + | XILegData + | XDLegData + | VALegData + | VMLegData + | XRLegData + | PILegData; + +export * from "./AFLeg"; +export * from "./CALeg"; +export * from "./CFLeg"; +export * from "./DFLeg"; +export * from "./FALeg"; +export * from "./FCLeg"; +export * from "./FDLeg"; +export * from "./FMLeg"; +export * from "./HALeg"; +export * from "./HFLeg"; +export * from "./HMLeg"; +export * from "./IFLeg"; +export * from "./PILeg"; +export * from "./RFLeg"; +export * from "./TFLeg"; +export * from "./VALeg"; +export * from "./VMLeg"; +export * from "./XDLeg"; +export * from "./XILeg"; +export * from "./XRLeg"; diff --git a/src/ts/types/airport.ts b/src/ts/types/airport.ts new file mode 100644 index 00000000..78a3e954 --- /dev/null +++ b/src/ts/types/airport.ts @@ -0,0 +1,37 @@ +import { Coordinates, Degrees, Feet, Knots } from "./math"; + +export enum IfrCapability { + Yes = "Y", + No = "N", +} + +export enum RunwaySurfaceCode { + Hard = "H", + Soft = "S", + Water = "W", + Unknown = "U", +} + +export interface Airport { + airport_type?: string; + area_code: string; + ident: string; + icao_code: string; + city?: string; + continent?: string; + country?: string; + country_3letter?: string; + state?: string; + state_2letter?: string; + location: Coordinates; + name: string; + ifr_capability: IfrCapability; + longest_runway_surface_code: RunwaySurfaceCode; + elevation: Feet; + transition_altitude?: Feet; + transition_level?: Feet; + speed_limit?: Knots; + speed_limit_altitude?: Feet; + iata_ident?: string; + magnetic_variation?: Degrees; +} diff --git a/src/js/types/airspace.ts b/src/ts/types/airspace.ts similarity index 54% rename from src/js/types/airspace.ts rename to src/ts/types/airspace.ts index b37d78d2..f21928a9 100644 --- a/src/js/types/airspace.ts +++ b/src/ts/types/airspace.ts @@ -1,66 +1,66 @@ -import { Coordinates, Degrees, NauticalMiles } from "./math" -import { TurnDirection } from "./ProcedureLeg" - -export enum ControlledAirspaceType { - ClassC = "A", - ControlArea = "C", - TmaOrTca = "K", - IcaoTerminalControlArea = "M", - MilitaryControlZone = "Q", - RadarZone = "R", - ClassB = "T", - TerminalControlArea = "W", - TerminalArea = "X", - TerminalRadarServiceArea = "Y", - ClassD = "Z", -} - -export enum RestrictiveAirspaceType { - Alert = "A", - Caution = "C", - Danger = "D", - Military = "M", - Prohibited = "P", - Restricted = "R", - Training = "T", - Warning = "W", - Unknown = "U", -} - -export enum PathType { - Circle = "C", - GreatCircle = "G", - RhumbLine = "R", - Arc = "A", -} - -export interface Arc { - origin: Coordinates - distance: NauticalMiles - bearing: Degrees - direction: TurnDirection -} - -export interface Path { - location: Coordinates - arc?: Arc - path_type: PathType -} - -export interface ControlledAirspace { - area_code: string - icao_code: string - airspace_center: string - name: string - airspace_type: ControlledAirspaceType - boundary_paths: Path[] -} - -export interface RestrictiveAirspace { - area_code: string - icao_code: string - designation: string - name: string - airspace_type: RestrictiveAirspaceType - boundary_paths: Path[] -} +import { Coordinates, Degrees, NauticalMiles } from "./math"; +import { TurnDirection } from "./ProcedureLeg"; + +export enum ControlledAirspaceType { + ClassC = "A", + ControlArea = "C", + TmaOrTca = "K", + IcaoTerminalControlArea = "M", + MilitaryControlZone = "Q", + RadarZone = "R", + ClassB = "T", + TerminalControlArea = "W", + TerminalArea = "X", + TerminalRadarServiceArea = "Y", + ClassD = "Z", +} + +export enum RestrictiveAirspaceType { + Alert = "A", + Caution = "C", + Danger = "D", + Military = "M", + Prohibited = "P", + Restricted = "R", + Training = "T", + Warning = "W", + Unknown = "U", +} + +export enum PathType { + Circle = "C", + GreatCircle = "G", + RhumbLine = "R", + Arc = "A", +} + +export interface Arc { + origin: Coordinates; + distance: NauticalMiles; + bearing: Degrees; + direction: TurnDirection; +} + +export interface Path { + location: Coordinates; + arc?: Arc; + path_type: PathType; +} + +export interface ControlledAirspace { + area_code: string; + icao_code: string; + airspace_center: string; + name: string; + airspace_type: ControlledAirspaceType; + boundary_paths: Path[]; +} + +export interface RestrictiveAirspace { + area_code: string; + icao_code: string; + designation: string; + name: string; + airspace_type: RestrictiveAirspaceType; + boundary_paths: Path[]; +} diff --git a/src/js/types/airway.ts b/src/ts/types/airway.ts similarity index 68% rename from src/js/types/airway.ts rename to src/ts/types/airway.ts index 12041890..6d04f7e4 100644 --- a/src/js/types/airway.ts +++ b/src/ts/types/airway.ts @@ -1,29 +1,29 @@ -import { Fix } from "./fix" - -export enum AirwayRouteType { - Control = "C", - DirectRoute = "D", - HelicopterRoute = "H", - OfficialDesignatedAirwaysExpectRnavAirways = "O", - RnavAirways = "R", - UndesignatedAtsRoute = "S", -} - -export enum AirwayLevel { - Both = "B", - High = "H", - Low = "L", -} - -export enum AirwayDirection { - Forward = "F", - Backward = "B", -} - -export interface Airway { - ident: string - fixes: Fix[] - route_type: AirwayRouteType - level: AirwayLevel - direction?: AirwayDirection -} +import { Fix } from "./fix"; + +export enum AirwayRouteType { + Control = "C", + DirectRoute = "D", + HelicopterRoute = "H", + OfficialDesignatedAirwaysExpectRnavAirways = "O", + RnavAirways = "R", + UndesignatedAtsRoute = "S", +} + +export enum AirwayLevel { + Both = "B", + High = "H", + Low = "L", +} + +export enum AirwayDirection { + Forward = "F", + Backward = "B", +} + +export interface Airway { + ident: string; + fixes: Fix[]; + route_type: AirwayRouteType; + level: AirwayLevel; + direction?: AirwayDirection; +} diff --git a/src/js/types/communication.ts b/src/ts/types/communication.ts similarity index 75% rename from src/js/types/communication.ts rename to src/ts/types/communication.ts index 80d23511..9189c04c 100644 --- a/src/js/types/communication.ts +++ b/src/ts/types/communication.ts @@ -1,73 +1,73 @@ -import { Coordinates } from "./math" - -export enum FrequencyUnits { - High = "H", - VeryHigh = "V", - UltraHigh = "U", - /** Communication channel for 8.33 kHz spacing */ - CommChannel = "C", -} - -export enum CommunicationType { - AreaControlCenter = "ACC", - AirliftCommandPost = "ACP", - AirToAir = "AIR", - ApproachControl = "APP", - ArrivalControl = "ARR", - AutomaticSurfaceObservingSystem = "ASO", - AutomaticTerminalInformationServices = "ATI", - AirportWeatherInformationBroadcast = "AWI", - AutomaticWeatherObservingBroadcast = "AWO", - AerodromeWeatherInformationService = "AWS", - ClearanceDelivery = "CLD", - ClearancePreTaxi = "CPT", - ControlArea = "CTA", - Control = "CTL", - DepartureControl = "DEP", - Director = "DIR", - EnrouteFlightAdvisoryService = "EFS", - Emergency = "EMR", - FlightServiceStation = "FSS", - GroundCommOutlet = "GCO", - GroundControl = "GND", - GateControl = "GET", - HelicopterFrequency = "HEL", - Information = "INF", - MilitaryFrequency = "MIL", - Multicom = "MUL", - Operations = "OPS", - PilotActivatedLighting = "PAL", - Radio = "RDO", - Radar = "RDR", - RemoteFlightServiceStation = "RFS", - RampTaxiControl = "RMP", - AirportRadarServiceArea = "RSA", - /** Terminal Control Area (TCA) */ - Tca = "TCA", - /** Terminal Control Area (TMA) */ - Tma = "TMA", - Terminal = "TML", - TerminalRadarServiceArea = "TRS", - TranscriberWeatherBroadcast = "TWE", - Tower = "TWR", - UpperAreaControl = "UAC", - Unicom = "UNI", - Volmet = "VOL", -} - -export interface Communication { - area_code: string - communication_type: CommunicationType - airport_ident?: string - fir_rdo_ident?: string - frequency: number - frequency_units: FrequencyUnits - callsign?: string - name?: string - location: Coordinates - remote_facility?: string - remote_facility_icao_code?: string - sector_facility?: string - sector_facility_icao_code?: string - sectorization?: string -} +import { Coordinates } from "./math"; + +export enum FrequencyUnits { + High = "H", + VeryHigh = "V", + UltraHigh = "U", + /** Communication channel for 8.33 kHz spacing */ + CommChannel = "C", +} + +export enum CommunicationType { + AreaControlCenter = "ACC", + AirliftCommandPost = "ACP", + AirToAir = "AIR", + ApproachControl = "APP", + ArrivalControl = "ARR", + AutomaticSurfaceObservingSystem = "ASO", + AutomaticTerminalInformationServices = "ATI", + AirportWeatherInformationBroadcast = "AWI", + AutomaticWeatherObservingBroadcast = "AWO", + AerodromeWeatherInformationService = "AWS", + ClearanceDelivery = "CLD", + ClearancePreTaxi = "CPT", + ControlArea = "CTA", + Control = "CTL", + DepartureControl = "DEP", + Director = "DIR", + EnrouteFlightAdvisoryService = "EFS", + Emergency = "EMR", + FlightServiceStation = "FSS", + GroundCommOutlet = "GCO", + GroundControl = "GND", + GateControl = "GET", + HelicopterFrequency = "HEL", + Information = "INF", + MilitaryFrequency = "MIL", + Multicom = "MUL", + Operations = "OPS", + PilotActivatedLighting = "PAL", + Radio = "RDO", + Radar = "RDR", + RemoteFlightServiceStation = "RFS", + RampTaxiControl = "RMP", + AirportRadarServiceArea = "RSA", + /** Terminal Control Area (TCA) */ + Tca = "TCA", + /** Terminal Control Area (TMA) */ + Tma = "TMA", + Terminal = "TML", + TerminalRadarServiceArea = "TRS", + TranscriberWeatherBroadcast = "TWE", + Tower = "TWR", + UpperAreaControl = "UAC", + Unicom = "UNI", + Volmet = "VOL", +} + +export interface Communication { + area_code: string; + communication_type: CommunicationType; + airport_ident?: string; + fir_rdo_ident?: string; + frequency: number; + frequency_units: FrequencyUnits; + callsign?: string; + name?: string; + location: Coordinates; + remote_facility?: string; + remote_facility_icao_code?: string; + sector_facility?: string; + sector_facility_icao_code?: string; + sectorization?: string; +} diff --git a/src/js/types/database_info.ts b/src/ts/types/database_info.ts similarity index 68% rename from src/js/types/database_info.ts rename to src/ts/types/database_info.ts index 8758b2ef..273f5912 100644 --- a/src/js/types/database_info.ts +++ b/src/ts/types/database_info.ts @@ -1,11 +1,11 @@ -export interface DatabaseInfo { - /** The AIRAC cycle that this database is. - * - * &e.g. `2313` or `2107` - */ - airac_cycle: string - /** The effective date range of this AIRAC cycle. */ - effective_from_to: [string, string] - /** The effective date range of the previous AIRAC cycle */ - previous_from_to: [string, string] -} +export interface DatabaseInfo { + /** The AIRAC cycle that this database is. + * + * &e.g. `2313` or `2107` + */ + airac_cycle: string; + /** The effective date range of this AIRAC cycle. */ + effective_from_to: [string, string]; + /** The effective date range of the previous AIRAC cycle */ + previous_from_to: [string, string]; +} diff --git a/src/js/types/fix.ts b/src/ts/types/fix.ts similarity index 53% rename from src/js/types/fix.ts rename to src/ts/types/fix.ts index afb78bb9..f4ec86fb 100644 --- a/src/js/types/fix.ts +++ b/src/ts/types/fix.ts @@ -1,19 +1,19 @@ -import { Coordinates } from "./math" - -export enum FixType { - Airport = "A", - NdbNavaid = "N", - RunwayThreshold = "R", - GlsNavaid = "G", - IlsNavaid = "I", - VhfNavaid = "V", - Waypoint = "W", -} - -export interface Fix { - fix_type: FixType - ident: string - icao_code: string - location: Coordinates - airport_ident?: string -} +import { Coordinates } from "./math"; + +export enum FixType { + Airport = "A", + NdbNavaid = "N", + RunwayThreshold = "R", + GlsNavaid = "G", + IlsNavaid = "I", + VhfNavaid = "V", + Waypoint = "W", +} + +export interface Fix { + fix_type: FixType; + ident: string; + icao_code: string; + location: Coordinates; + airport_ident?: string; +} diff --git a/src/ts/types/gate.ts b/src/ts/types/gate.ts new file mode 100644 index 00000000..e57be374 --- /dev/null +++ b/src/ts/types/gate.ts @@ -0,0 +1,9 @@ +import { Coordinates } from "./math"; + +export interface Gate { + area_code: string; + icao_code: string; + ident: string; + location: Coordinates; + name: string; +} diff --git a/src/js/types/gls_navaid.ts b/src/ts/types/gls_navaid.ts similarity index 67% rename from src/js/types/gls_navaid.ts rename to src/ts/types/gls_navaid.ts index 3c37d9f5..f3f85e92 100644 --- a/src/js/types/gls_navaid.ts +++ b/src/ts/types/gls_navaid.ts @@ -1,29 +1,29 @@ -import { Coordinates, Degrees, Feet } from "./math" - -export interface GlsNavaid { - /** The Geographic region where this navaid is */ - area_code: string - /** The identifier of the airport which this navaid serves */ - airport_ident: string - /** The icao prefix of the region this navaid is in */ - icao_code: string - /** The identifier of this navaid, such as `G03P` or `A34A` */ - ident: string - /** The category of this navaid, Technically can be multiple values, but the database only contains `1` as the - value for this field */ - category: string - /** The channel of this navaid */ - channel: number - /** The identifier of the runway this navaid serves */ - runway_ident: string - /** The magnetic bearing of the approach to this navaid */ - magnetic_approach_bearing: Degrees - /** The location of this navaid */ - location: Coordinates - /** The angle of the approach to this navaid */ - approach_angle: Degrees - /** The magnetic variation at this navaid */ - magnetic_variation: number - /** The elevation of this navaid */ - elevation: Feet -} +import { Coordinates, Degrees, Feet } from "./math"; + +export interface GlsNavaid { + /** The Geographic region where this navaid is */ + area_code: string; + /** The identifier of the airport which this navaid serves */ + airport_ident: string; + /** The icao prefix of the region this navaid is in */ + icao_code: string; + /** The identifier of this navaid, such as `G03P` or `A34A` */ + ident: string; + /** The category of this navaid, Technically can be multiple values, but the database only contains `1` as the + value for this field */ + category: string; + /** The channel of this navaid */ + channel: number; + /** The identifier of the runway this navaid serves */ + runway_ident: string; + /** The magnetic bearing of the approach to this navaid */ + magnetic_approach_bearing: Degrees; + /** The location of this navaid */ + location: Coordinates; + /** The angle of the approach to this navaid */ + approach_angle: Degrees; + /** The magnetic variation at this navaid */ + magnetic_variation: number; + /** The elevation of this navaid */ + elevation: Feet; +} diff --git a/src/ts/types/index.ts b/src/ts/types/index.ts new file mode 100644 index 00000000..52c07a65 --- /dev/null +++ b/src/ts/types/index.ts @@ -0,0 +1,16 @@ +export * from "./airport"; +export * from "./airspace"; +export * from "./airway"; +export * from "./communication"; +export * from "./database_info"; +export * from "./fix"; +export * from "./gate"; +export * from "./gls_navaid"; +export * from "./math"; +export * from "./ndb_navaid"; +export * from "./path_point"; +export * from "./procedure"; +export * from "./ProcedureLeg"; +export * from "./runway_threshold"; +export * from "./vhfnavaid"; +export * from "./waypoint"; diff --git a/src/ts/types/math.ts b/src/ts/types/math.ts new file mode 100644 index 00000000..d97e2117 --- /dev/null +++ b/src/ts/types/math.ts @@ -0,0 +1,15 @@ +export type Degrees = number; + +export type Feet = number; + +export type Knots = number; +export type NauticalMiles = number; +export type Minutes = number; +export type KiloHertz = number; +export type MegaHertz = number; +export type Metres = number; + +export interface Coordinates { + lat: Degrees; + long: Degrees; +} diff --git a/src/ts/types/meta.ts b/src/ts/types/meta.ts new file mode 100644 index 00000000..f8c1adde --- /dev/null +++ b/src/ts/types/meta.ts @@ -0,0 +1,15 @@ +export enum InstallStatus { + Bundled = "Bundled", + Manual = "Manual", + None = "None", +} + +export interface NavigationDataStatus { + status: InstallStatus; + installedFormat: string | null; + installedRevision: string | null; + installedCycle: string | null; + installedPath: string | null; + validityPeriod: string | null; + latestCycle: string | null; +} diff --git a/src/ts/types/ndb_navaid.ts b/src/ts/types/ndb_navaid.ts new file mode 100644 index 00000000..38642a92 --- /dev/null +++ b/src/ts/types/ndb_navaid.ts @@ -0,0 +1,15 @@ +import { Coordinates, KiloHertz, NauticalMiles } from "./math"; + +export interface NdbNavaid { + area_code: string; + continent?: string; + country?: string; + datum_code?: string; + airport_ident?: string; + icao_code: string; + ident: string; + name: string; + frequency: KiloHertz; + location: Coordinates; + range?: NauticalMiles; +} diff --git a/src/ts/types/path_point.ts b/src/ts/types/path_point.ts new file mode 100644 index 00000000..635bbe7b --- /dev/null +++ b/src/ts/types/path_point.ts @@ -0,0 +1,31 @@ +import { Coordinates, Degrees, Metres } from "./math"; + +export enum ApproachTypeIdentifier { + LocalizerPerformanceVerticalGuidance = "LPV", + LocalizerPerformance = "LP", +} + +export interface PathPoint { + area_code: string; + airport_ident: string; + icao_code: string; + /** The identifier of the approach this path point is used in, such as `R36RY` or `R20` */ + approach_ident: string; + /** The identifier of the runway this path point is used with, such as `RW02` or `RW36L` */ + runway_ident: string; + ident: string; + landing_threshold_location: Coordinates; + ltp_ellipsoid_height: Metres; + fpap_ellipsoid_height?: Metres; + ltp_orthometric_height?: Metres; + fpap_orthometric_height?: Metres; + glidepath_angle: Degrees; + flightpath_alignment_location: Coordinates; + course_width: Metres; + length_offset: Metres; + path_point_tch: Metres; + horizontal_alert_limit: Metres; + vertical_alert_limit: Metres; + gnss_channel_number: number; + approach_type: ApproachTypeIdentifier; +} diff --git a/src/ts/types/procedure.ts b/src/ts/types/procedure.ts new file mode 100644 index 00000000..2388afe0 --- /dev/null +++ b/src/ts/types/procedure.ts @@ -0,0 +1,57 @@ +import { ProcedureLeg } from "./ProcedureLeg"; + +export interface Transition { + ident: string; + legs: ProcedureLeg[]; +} + +export interface Departure { + ident: string; + runway_transitions: Transition[]; + common_legs: ProcedureLeg[]; + enroute_transitions: Transition[]; + engine_out_legs: ProcedureLeg[]; + + identical_runway_transitions: boolean; +} + +export interface Arrival { + ident: string; + enroute_transitions: Transition[]; + common_legs: ProcedureLeg[]; + runway_transitions: Transition[]; + + identical_runway_transitions: boolean; +} + +export enum ApproachType { + LocBackcourse = "B", + VorDme = "D", + Fms = "F", + Igs = "G", + Ils = "I", + Gls = "J", + Loc = "L", + Mls = "M", + Ndb = "N", + Gps = "P", + NdbDme = "Q", + Rnav = "R", + Vortac = "S", + Tacan = "T", + Sdf = "U", + Vor = "V", + MlsTypeA = "W", + Lda = "X", + MlsTypeBC = "Y", +} + +export interface Approach { + ident: string; + transitions: Transition[]; + legs: ProcedureLeg[]; + missed_legs: ProcedureLeg[]; + + runway_ident: string; + approach_type: ApproachType; +} diff --git a/src/js/types/runway_threshold.ts b/src/ts/types/runway_threshold.ts similarity index 66% rename from src/js/types/runway_threshold.ts rename to src/ts/types/runway_threshold.ts index ade98871..ee9315b1 100644 --- a/src/js/types/runway_threshold.ts +++ b/src/ts/types/runway_threshold.ts @@ -1,56 +1,56 @@ -import { Coordinates, Degrees, Feet } from "./math" - -// Im not sure why we chose an enum, but I think its because its Y/N in the DFDv2 Spec -export enum RunwayLights { - Yes = "Y", - No = "N", -} - -export enum RunwaySurface { - Gravel = "GRVL", - Unpaved = "UNPV", - Asphalt = "ASPH", - Turf = "TURF", - Dirt = "DIRT", - Concrete = "CONC", - Water = "WATE", - Sand = "SAND", - Coral = "CORL", - Paved = "PAVD", - Grass = "GRAS", - Bitumen = "BITU", - Planking = "PLNG", - Clay = "CLAY", - Ice = "ICE", - Silt = "SILT", - Laterite = "LATE", - Tarmac = "TARM", - Macadam = "MACA", - Sealed = "SELD", - Soil = "SOIL", - Brick = "BRCK", - Unknown = "UNKN", - Mats = "MATS", - Snow = "SNOW", - Treated = "TRTD", -} - -export enum TrafficPattern { - Left = "L", - Right = "R", -} - -export interface RunwayThreshold { - ident: string - icao_code: string - length: Feet - width: Feet - true_bearing: Degrees - magnetic_bearing: Degrees - lights?: RunwayLights - gradient: Degrees - location: Coordinates - elevation: Feet - surface?: RunwaySurface - traffic_pattern?: TrafficPattern -} +import { Coordinates, Degrees, Feet } from "./math"; + +// Im not sure why we chose an enum, but I think its because its Y/N in the DFDv2 Spec +export enum RunwayLights { + Yes = "Y", + No = "N", +} + +export enum RunwaySurface { + Gravel = "GRVL", + Unpaved = "UNPV", + Asphalt = "ASPH", + Turf = "TURF", + Dirt = "DIRT", + Concrete = "CONC", + Water = "WATE", + Sand = "SAND", + Coral = "CORL", + Paved = "PAVD", + Grass = "GRAS", + Bitumen = "BITU", + Planking = "PLNG", + Clay = "CLAY", + Ice = "ICE", + Silt = "SILT", + Laterite = "LATE", + Tarmac = "TARM", + Macadam = "MACA", + Sealed = "SELD", + Soil = "SOIL", + Brick = "BRCK", + Unknown = "UNKN", + Mats = "MATS", + Snow = "SNOW", + Treated = "TRTD", +} + +export enum TrafficPattern { + Left = "L", + Right = "R", +} + +export interface RunwayThreshold { + ident: string; + icao_code: string; + length: Feet; + width: Feet; + true_bearing: Degrees; + magnetic_bearing: Degrees; + lights?: RunwayLights; + gradient: Degrees; + location: Coordinates; + elevation: Feet; + surface?: RunwaySurface; + traffic_pattern?: TrafficPattern; +} diff --git a/src/ts/types/vhfnavaid.ts b/src/ts/types/vhfnavaid.ts new file mode 100644 index 00000000..78607613 --- /dev/null +++ b/src/ts/types/vhfnavaid.ts @@ -0,0 +1,17 @@ +import { Coordinates, Degrees, MegaHertz, NauticalMiles } from "./math"; + +export interface VhfNavaid { + area_code: string; + airport_ident?: string; + continent?: string; + country?: string; + datum_code?: string; + icao_code: string; + ident: string; + name: string; + frequency: MegaHertz; + location: Coordinates; + magnetic_variation?: Degrees; + station_declination?: Degrees; + range?: NauticalMiles; +} diff --git a/src/ts/types/waypoint.ts b/src/ts/types/waypoint.ts new file mode 100644 index 00000000..f84ca6f1 --- /dev/null +++ b/src/ts/types/waypoint.ts @@ -0,0 +1,14 @@ +import { Coordinates, Degrees } from "./math"; + +export interface Waypoint { + area_code: string; + airport_ident?: string; + continent?: string; + country?: string; + datum_code?: string; + icao_code: string; + ident: string; + name: string; + location: Coordinates; + magnetic_variation?: Degrees; +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..b06e98ff --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + // Environment setup & latest features + "lib": [ + "ESNext" + ], + "target": "ESNext", + "module": "ESNext", + "moduleDetection": "force", + "jsx": "react-jsx", + "allowJs": true, + // Bundler mode + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "noEmit": true, + // Best practices + "strict": true, + "skipLibCheck": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedIndexedAccess": true, + // Some stricter flags (disabled by default) + "noUnusedLocals": false, + "noUnusedParameters": false, + "noPropertyAccessFromIndexSignature": false, + }, +} \ No newline at end of file From bba03ccda7f4a435eacad05c59705c70d8c0732a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Malte=20Hallstr=C3=B6m?= Date: Fri, 4 Apr 2025 16:27:49 +0200 Subject: [PATCH 03/37] chore: remove leftover config --- .cargo/config.toml | 24 ------------------------ 1 file changed, 24 deletions(-) delete mode 100644 .cargo/config.toml diff --git a/.cargo/config.toml b/.cargo/config.toml deleted file mode 100644 index 594dbcbc..00000000 --- a/.cargo/config.toml +++ /dev/null @@ -1,24 +0,0 @@ -[target.wasm32-wasip1] -rustflags = [ - "-Ctarget-feature=-crt-static,+bulk-memory", - "-Clink-self-contained=no", - "-Clink-arg=-l", - "-Clink-arg=c", - "-Clink-arg=/workdir/MSFS_SDK/WASM/wasi-sysroot/lib/wasm32-wasi/libclang_rt.builtins-wasm32.a", - "-Clink-arg=-L", - "-Clink-arg=/workdir/MSFS_SDK/WASM/wasi-sysroot/lib/wasm32-wasi", - "-Clink-arg=--export-table", - "-Clink-arg=--allow-undefined", - "-Clink-arg=--export-dynamic", - "-Clink-arg=--export=__wasm_call_ctors", - "-Clink-arg=--export=malloc", - "-Clink-arg=--export=free", - "-Clink-arg=--export=mark_decommit_pages", - "-Clink-arg=--export=mallinfo", - "-Clink-arg=--export=mchunkit_begin", - "-Clink-arg=--export=mchunkit_next", - "-Clink-arg=--export=get_pages_state", -] - -[build] -target = "wasm32-wasip1" From 7b10c9fb0dce63b1093ee260cea3421b43e94624 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Malte=20Hallstr=C3=B6m?= Date: Fri, 4 Apr 2025 16:27:56 +0200 Subject: [PATCH 04/37] style: format example --- example/gauge/Components/InterfaceSample.tsx | 46 +++---- example/gauge/Components/Pages/Auth/Auth.tsx | 130 +++++++++--------- .../Components/Pages/Dashboard/Dashboard.tsx | 14 +- example/gauge/Components/Pages/Test/Test.tsx | 110 +++++++-------- example/gauge/package.json | 5 +- 5 files changed, 153 insertions(+), 152 deletions(-) diff --git a/example/gauge/Components/InterfaceSample.tsx b/example/gauge/Components/InterfaceSample.tsx index 021bb066..b1025b05 100644 --- a/example/gauge/Components/InterfaceSample.tsx +++ b/example/gauge/Components/InterfaceSample.tsx @@ -6,32 +6,32 @@ import { FSComponent, Subject, VNode, -} from "@microsoft/msfs-sdk" -import { NavigraphNavigationDataInterface } from "@navigraph/msfs-navigation-data-interface" -import "./InterfaceSample.css" -import { NavigationDataStatus } from "@navigraph/msfs-navigation-data-interface" -import { AuthPage } from "./Pages/Auth/Auth" -import { Dashboard } from "./Pages/Dashboard/Dashboard" -import { TestPage } from "./Pages/Test/Test" -import { InterfaceNavbar, InterfaceSwitch } from "./Utils" +} from "@microsoft/msfs-sdk"; +import { NavigraphNavigationDataInterface } from "@navigraph/msfs-navigation-data-interface"; +import "./InterfaceSample.css"; +import { NavigationDataStatus } from "@navigraph/msfs-navigation-data-interface"; +import { AuthPage } from "./Pages/Auth/Auth"; +import { Dashboard } from "./Pages/Dashboard/Dashboard"; +import { TestPage } from "./Pages/Test/Test"; +import { InterfaceNavbar, InterfaceSwitch } from "./Utils"; interface InterfaceSampleProps extends ComponentProps { - bus: EventBus + bus: EventBus; } export class InterfaceSample extends DisplayComponent { - private readonly loadingRef = FSComponent.createRef() - private readonly authContainerRef = FSComponent.createRef() + private readonly loadingRef = FSComponent.createRef(); + private readonly authContainerRef = FSComponent.createRef(); - private readonly mainPageIndex = Subject.create(0) - private readonly databaseInfo = Subject.create(null) + private readonly mainPageIndex = Subject.create(0); + private readonly databaseInfo = Subject.create(null); - private navigationDataInterface: NavigraphNavigationDataInterface + private navigationDataInterface: NavigraphNavigationDataInterface; constructor(props: InterfaceSampleProps) { - super(props) + super(props); - this.navigationDataInterface = new NavigraphNavigationDataInterface() + this.navigationDataInterface = new NavigraphNavigationDataInterface(); } public render(): VNode { @@ -72,21 +72,21 @@ export class InterfaceSample extends DisplayComponent { - ) + ); } public onAfterRender(node: VNode): void { - super.onAfterRender(node) + super.onAfterRender(node); // Populate status when ready this.navigationDataInterface.onReady(async () => { - const activePackage = await this.navigationDataInterface.get_navigation_data_install_status() + const activePackage = await this.navigationDataInterface.get_navigation_data_install_status(); - this.databaseInfo.set(activePackage) + this.databaseInfo.set(activePackage); // show the auth container - this.authContainerRef.instance.style.display = "block" - this.loadingRef.instance.style.display = "none" - }) + this.authContainerRef.instance.style.display = "block"; + this.loadingRef.instance.style.display = "none"; + }); } } diff --git a/example/gauge/Components/Pages/Auth/Auth.tsx b/example/gauge/Components/Pages/Auth/Auth.tsx index 80737b55..ce237059 100644 --- a/example/gauge/Components/Pages/Auth/Auth.tsx +++ b/example/gauge/Components/Pages/Auth/Auth.tsx @@ -1,96 +1,96 @@ -import { ComponentProps, DisplayComponent, FSComponent, Subscribable, VNode } from "@microsoft/msfs-sdk" +import { ComponentProps, DisplayComponent, FSComponent, Subscribable, VNode } from "@microsoft/msfs-sdk"; import { DownloadProgressPhase, NavigationDataStatus, NavigraphEventType, NavigraphNavigationDataInterface, -} from "@navigraph/msfs-navigation-data-interface" -import { CancelToken } from "navigraph/auth" -import { packages } from "../../../Lib/navigraph" -import { AuthService } from "../../../Services/AuthService" -import { Dropdown } from "../../Dropdown" +} from "@navigraph/msfs-navigation-data-interface"; +import { CancelToken } from "navigraph/auth"; +import { packages } from "../../../Lib/navigraph"; +import { AuthService } from "../../../Services/AuthService"; +import { Dropdown } from "../../Dropdown"; interface AuthPageProps extends ComponentProps { - setDatabaseInfo: (value: NavigationDataStatus) => void - navigationDataInterface: NavigraphNavigationDataInterface + setDatabaseInfo: (value: NavigationDataStatus) => void; + navigationDataInterface: NavigraphNavigationDataInterface; } export class AuthPage extends DisplayComponent { - private readonly textRef = FSComponent.createRef() - private readonly loginButtonRef = FSComponent.createRef() - private readonly navigationDataTextRef = FSComponent.createRef() - private readonly qrCodeRef = FSComponent.createRef() - private readonly dropdownRef = FSComponent.createRef() - private readonly downloadButtonRef = FSComponent.createRef() + private readonly textRef = FSComponent.createRef(); + private readonly loginButtonRef = FSComponent.createRef(); + private readonly navigationDataTextRef = FSComponent.createRef(); + private readonly qrCodeRef = FSComponent.createRef(); + private readonly dropdownRef = FSComponent.createRef(); + private readonly downloadButtonRef = FSComponent.createRef(); - private cancelSource = CancelToken.source() + private cancelSource = CancelToken.source(); constructor(props: AuthPageProps) { - super(props) + super(props); this.props.navigationDataInterface.onEvent(NavigraphEventType.DownloadProgress, data => { switch (data.phase) { case DownloadProgressPhase.Downloading: - this.displayMessage("Downloading navigation data...") - break + this.displayMessage("Downloading navigation data..."); + break; case DownloadProgressPhase.Cleaning: - if (!data.deleted) return - this.displayMessage(`Cleaning destination directory. ${data.deleted} files deleted so far`) - break + if (!data.deleted) return; + this.displayMessage(`Cleaning destination directory. ${data.deleted} files deleted so far`); + break; case DownloadProgressPhase.Extracting: { // Ensure non-null - if (!data.unzipped || !data.total_to_unzip) return - const percent = Math.round((data.unzipped / data.total_to_unzip) * 100) - this.displayMessage(`Unzipping files... ${percent}% complete`) - break + if (!data.unzipped || !data.total_to_unzip) return; + const percent = Math.round((data.unzipped / data.total_to_unzip) * 100); + this.displayMessage(`Unzipping files... ${percent}% complete`); + break; } } - }) + }); } onAfterRender(node: VNode): void { - super.onAfterRender(node) + super.onAfterRender(node); - this.loginButtonRef.instance.addEventListener("click", () => this.handleClick()) - this.downloadButtonRef.instance.addEventListener("click", () => this.handleDownloadClick()) + this.loginButtonRef.instance.addEventListener("click", () => this.handleClick()); + this.downloadButtonRef.instance.addEventListener("click", () => this.handleDownloadClick()); AuthService.user.sub(user => { if (user) { - this.qrCodeRef.instance.src = "" - this.qrCodeRef.instance.style.display = "none" - this.loginButtonRef.instance.textContent = "Log out" - this.textRef.instance.textContent = `Welcome, ${user.preferred_username}` - this.displayMessage("") + this.qrCodeRef.instance.src = ""; + this.qrCodeRef.instance.style.display = "none"; + this.loginButtonRef.instance.textContent = "Log out"; + this.textRef.instance.textContent = `Welcome, ${user.preferred_username}`; + this.displayMessage(""); - this.handleLogin() + this.handleLogin(); } else { - this.loginButtonRef.instance.textContent = "Sign in" - this.textRef.instance.textContent = "Not logged in" + this.loginButtonRef.instance.textContent = "Sign in"; + this.textRef.instance.textContent = "Not logged in"; } - }, true) + }, true); } private async handleClick() { try { if (AuthService.getUser()) { - await AuthService.signOut() + await AuthService.signOut(); } else { - this.cancelSource = CancelToken.source() // Reset any previous cancellations - this.displayMessage("Authenticating.. Scan code (or click it) to sign in") + this.cancelSource = CancelToken.source(); // Reset any previous cancellations + this.displayMessage("Authenticating.. Scan code (or click it) to sign in"); await AuthService.signIn(p => { if (p) { - this.qrCodeRef.instance.src = `https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=${p.verification_uri_complete}` - this.qrCodeRef.instance.style.display = "block" + this.qrCodeRef.instance.src = `https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=${p.verification_uri_complete}`; + this.qrCodeRef.instance.style.display = "block"; this.qrCodeRef.instance.onclick = () => { - OpenBrowser(p.verification_uri_complete) - } + OpenBrowser(p.verification_uri_complete); + }; } - }, this.cancelSource.token) + }, this.cancelSource.token); } } catch (err) { - this.qrCodeRef.instance.style.display = "none" - if (err instanceof Error) this.displayError(err.message) - else this.displayError(`Unknown error: ${String(err)}`) + this.qrCodeRef.instance.style.display = "none"; + if (err instanceof Error) this.displayError(err.message); + else this.displayError(`Unknown error: ${String(err)}`); } } @@ -100,44 +100,44 @@ export class AuthPage extends DisplayComponent { .listPackages() .then(pkgs => { for (const pkg of pkgs) { - this.dropdownRef.instance.addDropdownItem(pkg.format, pkg.format) + this.dropdownRef.instance.addDropdownItem(pkg.format, pkg.format); } }) - .catch(e => console.error(e)) + .catch(e => console.error(e)); } private async handleDownloadClick() { try { if (!this.props.navigationDataInterface.getIsInitialized()) - throw new Error("Navigation data interface not initialized") + throw new Error("Navigation data interface not initialized"); - const format = this.dropdownRef.instance.getNavigationDataFormat() - if (!format) throw new Error("Unable to fetch package: No navigation data format has been selected") + const format = this.dropdownRef.instance.getNavigationDataFormat(); + if (!format) throw new Error("Unable to fetch package: No navigation data format has been selected"); // Get default package for client - const pkg = await packages.getPackage(format) + const pkg = await packages.getPackage(format); // Download navigation data to work dir and set active - await this.props.navigationDataInterface.download_navigation_data(pkg.file.url) + await this.props.navigationDataInterface.download_navigation_data(pkg.file.url); // Update navigation data status - this.props.setDatabaseInfo(await this.props.navigationDataInterface.get_navigation_data_install_status()) + this.props.setDatabaseInfo(await this.props.navigationDataInterface.get_navigation_data_install_status()); - this.displayMessage("Navigation data downloaded") + this.displayMessage("Navigation data downloaded"); } catch (err) { - if (err instanceof Error) this.displayError(err.message) - else this.displayError(`Unknown error: ${String(err)}`) + if (err instanceof Error) this.displayError(err.message); + else this.displayError(`Unknown error: ${String(err)}`); } } private displayMessage(message: string) { - this.navigationDataTextRef.instance.textContent = message - this.navigationDataTextRef.instance.style.color = "white" + this.navigationDataTextRef.instance.textContent = message; + this.navigationDataTextRef.instance.style.color = "white"; } private displayError(error: string) { - this.navigationDataTextRef.instance.textContent = error - this.navigationDataTextRef.instance.style.color = "red" + this.navigationDataTextRef.instance.textContent = error; + this.navigationDataTextRef.instance.style.color = "red"; } render(): VNode { @@ -161,6 +161,6 @@ export class AuthPage extends DisplayComponent { - ) + ); } } diff --git a/example/gauge/Components/Pages/Dashboard/Dashboard.tsx b/example/gauge/Components/Pages/Dashboard/Dashboard.tsx index 6f80f3ef..1874f7e4 100644 --- a/example/gauge/Components/Pages/Dashboard/Dashboard.tsx +++ b/example/gauge/Components/Pages/Dashboard/Dashboard.tsx @@ -1,9 +1,9 @@ -import { ComponentProps, DisplayComponent, FSComponent, Subscribable, VNode } from "@microsoft/msfs-sdk" -import { NavigationDataStatus, NavigraphNavigationDataInterface } from "@navigraph/msfs-navigation-data-interface" +import { ComponentProps, DisplayComponent, FSComponent, Subscribable, VNode } from "@microsoft/msfs-sdk"; +import { NavigationDataStatus, NavigraphNavigationDataInterface } from "@navigraph/msfs-navigation-data-interface"; interface DashboardProps extends ComponentProps { - databaseInfo: Subscribable - interface: NavigraphNavigationDataInterface + databaseInfo: Subscribable; + interface: NavigraphNavigationDataInterface; } export class Dashboard extends DisplayComponent { @@ -15,12 +15,12 @@ export class Dashboard extends DisplayComponent { - ) + ); } } interface ActiveDatabaseProps extends ComponentProps { - databaseInfo: Subscribable + databaseInfo: Subscribable; // : MappedSubscribable } @@ -62,6 +62,6 @@ class ActiveDatabase extends DisplayComponent { - ) + ); } } diff --git a/example/gauge/Components/Pages/Test/Test.tsx b/example/gauge/Components/Pages/Test/Test.tsx index 7cebba35..5a502efb 100644 --- a/example/gauge/Components/Pages/Test/Test.tsx +++ b/example/gauge/Components/Pages/Test/Test.tsx @@ -6,26 +6,26 @@ import { ObjectSubject, Subject, VNode, -} from "@microsoft/msfs-sdk" -import { Coordinates, NavigraphNavigationDataInterface } from "@navigraph/msfs-navigation-data-interface" -import { Checkbox, Input } from "../../Input" -import { Button, InterfaceNavbarItemV2, InterfaceSwitch } from "../../Utils" +} from "@microsoft/msfs-sdk"; +import { Coordinates, NavigraphNavigationDataInterface } from "@navigraph/msfs-navigation-data-interface"; +import { Checkbox, Input } from "../../Input"; +import { Button, InterfaceNavbarItemV2, InterfaceSwitch } from "../../Utils"; interface TestPageProps extends ComponentProps { - interface: NavigraphNavigationDataInterface + interface: NavigraphNavigationDataInterface; } interface FunctionDescriptor { - index: number - arguments: string[] - name: string - functionCallback: (input?: string, inputAlt?: string) => Promise + index: number; + arguments: string[]; + name: string; + functionCallback: (input?: string, inputAlt?: string) => Promise; } interface InputState { - active: boolean - type: InputStateType - hint: string + active: boolean; + type: InputStateType; + hint: string; } enum InputStateType { @@ -215,107 +215,107 @@ export class TestPage extends DisplayComponent { name: "GetDatabaseInfo", functionCallback: () => this.props.interface.get_database_info(), }, - ] + ]; - private readonly input1 = Subject.create("") - private readonly input2 = Subject.create("") - private readonly output = Subject.create("") - private readonly selectedFunction = Subject.create(0) - private readonly selectedFunctionObj = this.selectedFunction.map(index => this.functionList[index]) + private readonly input1 = Subject.create(""); + private readonly input2 = Subject.create(""); + private readonly output = Subject.create(""); + private readonly selectedFunction = Subject.create(0); + private readonly selectedFunctionObj = this.selectedFunction.map(index => this.functionList[index]); private readonly input1State = ObjectSubject.create({ active: false, type: InputStateType.String, hint: this.functionList[this.selectedFunction.get()].arguments[0] ?? "", - }) + }); private readonly input2State = ObjectSubject.create({ active: false, type: InputStateType.String, hint: this.functionList[this.selectedFunction.get()].arguments[1] ?? "", - }) + }); private doubleInputCss = MappedSubject.create( ([input1, input2]) => `flex flex-row h-16 bg-ng-background-500 items-center p-2 ${input1.active && input2.active ? "space-x-2" : ""}`, this.input1State, this.input2State, - ) + ); private strToBool(input?: string): boolean { - return input == "true" ? true : false + return input == "true" ? true : false; } private strToCoords(input?: string): Coordinates { - const splitInput = (input ?? "").replace(/[(){}\s]/g, "").split(",") + const splitInput = (input ?? "").replace(/[(){}\s]/g, "").split(","); const coords: Coordinates = { lat: Number(splitInput[0] ?? 0.0), long: Number(splitInput[1] ?? 0.0), - } + }; - return coords + return coords; } private handleFunction = () => { - const functionObj = this.selectedFunctionObj.get() - const input1 = this.input1.get() - const input2 = this.input2.get() + const functionObj = this.selectedFunctionObj.get(); + const input1 = this.input1.get(); + const input2 = this.input2.get(); functionObj .functionCallback(input1, input2) .then(obj => this.output.set(JSON.stringify(obj, null, 2))) - .catch(err => this.output.set(JSON.stringify(err, null, 2))) - } + .catch(err => this.output.set(JSON.stringify(err, null, 2))); + }; onAfterRender(node: VNode): void { - super.onAfterRender(node) + super.onAfterRender(node); this.selectedFunctionObj.map(functionObj => { - const functionArgCount = functionObj.arguments.length + const functionArgCount = functionObj.arguments.length; switch (functionArgCount) { case 1: { - this.input1State.set("active", true) - this.input2State.set("active", false) - break + this.input1State.set("active", true); + this.input2State.set("active", false); + break; } case 2: { - this.input1State.set("active", true) - this.input2State.set("active", true) - break + this.input1State.set("active", true); + this.input2State.set("active", true); + break; } default: { - this.input1State.set("active", false) - this.input2State.set("active", false) - break + this.input1State.set("active", false); + this.input2State.set("active", false); + break; } } - this.input1.set("") - this.input2.set("") + this.input1.set(""); + this.input2.set(""); functionObj.arguments.forEach((value, index) => { - const argumentType = value.includes("bool") ? InputStateType.Bool : InputStateType.String + const argumentType = value.includes("bool") ? InputStateType.Bool : InputStateType.String; switch (index) { case 1: { - this.input2State.set("type", argumentType) - this.input2State.set("hint", functionObj.arguments[1]) + this.input2State.set("type", argumentType); + this.input2State.set("hint", functionObj.arguments[1]); if (argumentType === InputStateType.Bool) { - this.input2.set("false") + this.input2.set("false"); } - break + break; } default: { - this.input1State.set("type", argumentType) - this.input1State.set("hint", functionObj.arguments[0]) + this.input1State.set("type", argumentType); + this.input1State.set("hint", functionObj.arguments[0]); if (argumentType === InputStateType.Bool) { - this.input1.set("false") + this.input1.set("false"); } - break + break; } } - }) - }) + }); + }); } render(): VNode { @@ -428,6 +428,6 @@ export class TestPage extends DisplayComponent { - ) + ); } } diff --git a/example/gauge/package.json b/example/gauge/package.json index 6a8b59c3..ba92818d 100644 --- a/example/gauge/package.json +++ b/example/gauge/package.json @@ -5,7 +5,8 @@ "main": "index.js", "scripts": { "build": "cross-env DEBUG=false npx rollup -c", - "dev": "cross-env DEBUG=false npx rollup -c && cross-env DEBUG=true npx rollup -cw" + "dev": "cross-env DEBUG=false npx rollup -c && cross-env DEBUG=true npx rollup -cw", + "lint": "eslint . --ext .ts,.tsx" }, "keywords": [], "author": "", @@ -30,4 +31,4 @@ "@navigraph/msfs-navigation-data-interface": "*", "navigraph": "1.2.35" } -} +} \ No newline at end of file From 177373cbf2566a89eeaf90d40df31e08d2e6edef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Malte=20Hallstr=C3=B6m?= Date: Fri, 4 Apr 2025 16:29:44 +0200 Subject: [PATCH 05/37] chore: run lint autofix --- example/gauge/.eslintrc.js | 2 +- example/gauge/Components/Dropdown.tsx | 52 ++++++++--------- example/gauge/Components/Input.tsx | 68 +++++++++++----------- example/gauge/Components/List.tsx | 56 +++++++++--------- example/gauge/Components/Utils.tsx | 84 +++++++++++++-------------- example/gauge/Lib/navigraph.ts | 36 ++++++------ example/gauge/MyInstrument.tsx | 26 ++++----- example/gauge/Services/AuthService.ts | 36 ++++++------ example/gauge/env.d.ts | 4 +- example/gauge/global.d.ts | 10 ++-- example/gauge/msfssdk.d.ts | 4 +- example/gauge/postcss.config.js | 2 +- example/gauge/rollup.config.js | 22 +++---- example/gauge/tailwind.config.js | 2 +- src/ts/tsconfig.json | 25 ++++---- 15 files changed, 215 insertions(+), 214 deletions(-) diff --git a/example/gauge/.eslintrc.js b/example/gauge/.eslintrc.js index 0798f691..529aba7e 100644 --- a/example/gauge/.eslintrc.js +++ b/example/gauge/.eslintrc.js @@ -8,4 +8,4 @@ module.exports = { ecmaFeatures: { jsx: true }, jsxPragma: "FSComponent", }, -} +}; diff --git a/example/gauge/Components/Dropdown.tsx b/example/gauge/Components/Dropdown.tsx index 08178f8b..b2601792 100644 --- a/example/gauge/Components/Dropdown.tsx +++ b/example/gauge/Components/Dropdown.tsx @@ -1,13 +1,13 @@ -import { ComponentProps, DisplayComponent, FSComponent, Subject, VNode } from "@microsoft/msfs-sdk" -import "./Dropdown.css" +import { ComponentProps, DisplayComponent, FSComponent, Subject, VNode } from "@microsoft/msfs-sdk"; +import "./Dropdown.css"; export class Dropdown extends DisplayComponent { - private readonly dropdownButtonRef = FSComponent.createRef() - private readonly dropdownMenuRef = FSComponent.createRef() + private readonly dropdownButtonRef = FSComponent.createRef(); + private readonly dropdownMenuRef = FSComponent.createRef(); - private readonly dropdownButtonText = Subject.create("Select an item") + private readonly dropdownButtonText = Subject.create("Select an item"); - private navigationDataFormat: null | string = null + private navigationDataFormat: null | string = null; public render(): VNode { return ( @@ -17,50 +17,50 @@ export class Dropdown extends DisplayComponent {