From 1c17f3e191122b0c69d8092037a430f9e7f86c79 Mon Sep 17 00:00:00 2001 From: Thibaut Lassalle Date: Tue, 19 Oct 2021 09:09:39 -0700 Subject: [PATCH 01/27] remove dead code --- src/og/inherits.js | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 src/og/inherits.js diff --git a/src/og/inherits.js b/src/og/inherits.js deleted file mode 100644 index 5c6beb3d..00000000 --- a/src/og/inherits.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * @module og/inherits - */ - -export function inherits(childCtor, parentCtor) { - childCtor.prototype = Object.create(parentCtor.prototype); - childCtor.prototype.constructor = childCtor; -} \ No newline at end of file From ff32ad5c3485da88b5c1e6f5278adf0c993a59ed Mon Sep 17 00:00:00 2001 From: Thibaut Lassalle Date: Tue, 19 Oct 2021 09:09:45 -0700 Subject: [PATCH 02/27] use async --- src/og/entity/Label.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/og/entity/Label.js b/src/og/entity/Label.js index dceb314e..73005182 100644 --- a/src/og/entity/Label.js +++ b/src/og/entity/Label.js @@ -286,11 +286,10 @@ class Label extends BaseBillboard { * Updates label parameters. * @public */ - update() { + async update() { if (this._fontAtlas) { - this._fontAtlas.getFontIndex(this._face).then((fontIndex) => { - this._applyFontIndex(fontIndex); - }); + const fontIndex = await this._fontAtlas.getFontIndex(this._face); + this._applyFontIndex(fontIndex); } } From 8c44ea1ea12ab52b494bdc7bfbc2ee27a2d461d5 Mon Sep 17 00:00:00 2001 From: Thibaut Lassalle Date: Sun, 24 Oct 2021 15:25:04 -0700 Subject: [PATCH 03/27] fix unit tests --- jest.config.js | 3 +++ tests/Extent.test.js | 12 +----------- tests/Globe.test.js | 12 +----------- tests/SegmentLonLat.test.js | 6 +----- tests/entity/Billboard.test.js | 4 +--- tests/layer/Material.test.js | 10 ---------- tests/layer/Vector.test.js | 10 ---------- tests/layer/XYZ.test.js | 10 ---------- tests/setupTests.js | 11 +++++++++++ 9 files changed, 18 insertions(+), 60 deletions(-) create mode 100644 tests/setupTests.js diff --git a/jest.config.js b/jest.config.js index 6552843a..ab830d6c 100644 --- a/jest.config.js +++ b/jest.config.js @@ -5,4 +5,7 @@ module.exports = { coverageProvider: "v8", setupFiles: ["jest-canvas-mock", "jest-webgl-canvas-mock"], testEnvironment: "jsdom", + setupFilesAfterEnv: [ + "./tests/setupTests.js" + ], }; diff --git a/tests/Extent.test.js b/tests/Extent.test.js index 72cca7fe..d9296800 100644 --- a/tests/Extent.test.js +++ b/tests/Extent.test.js @@ -1,14 +1,4 @@ import { Extent } from '../src/og/Extent'; -import { Worker } from './worker'; -import { JSDOM } from 'jsdom'; - -window.Worker = Worker; - -const dom = new JSDOM('

'); -global.document = dom.window.document; -global.window = dom.window; - -global.URL.createObjectURL = jest.fn(() => ''); test('Testing Extent', () => { const extent = new Extent(); @@ -17,4 +7,4 @@ test('Testing Extent', () => { Extent.NORTH_POLE_DEG; Extent.SOUTH_POLE_DEG; expect(extent).toBeTruthy(); -}); \ No newline at end of file +}); diff --git a/tests/Globe.test.js b/tests/Globe.test.js index 56f2847a..f24f0038 100644 --- a/tests/Globe.test.js +++ b/tests/Globe.test.js @@ -1,16 +1,6 @@ import { Globe } from '../src/og/Globe'; -import { Worker } from './worker'; -import { JSDOM } from 'jsdom'; - -window.Worker = Worker; - -const dom = new JSDOM('

'); -global.document = dom.window.document; -global.window = dom.window; - -global.URL.createObjectURL = jest.fn(() => ''); test('Testing Globe', () => { const globe = new Globe({ target: 'div' }); expect(globe).toBeTruthy(); -}); \ No newline at end of file +}); diff --git a/tests/SegmentLonLat.test.js b/tests/SegmentLonLat.test.js index c9b63cf8..096c7b9b 100644 --- a/tests/SegmentLonLat.test.js +++ b/tests/SegmentLonLat.test.js @@ -1,10 +1,6 @@ import { Extent } from '../src/og/Extent'; import { Planet } from '../src/og/scene/Planet'; import { SegmentLonLat } from '../src/og/segment/SegmentLonLat'; -import { Worker } from './worker'; - -window.Worker = Worker; -global.URL.createObjectURL = jest.fn(() => ''); const mockPlanet = () => { const planet = new Planet(); @@ -16,4 +12,4 @@ const mockPlanet = () => { test('Testing SegmentLonLat', () => { const segmentLonLat = new SegmentLonLat({}, mockPlanet(), {}, new Extent()); expect(segmentLonLat).toBeTruthy(); -}); \ No newline at end of file +}); diff --git a/tests/entity/Billboard.test.js b/tests/entity/Billboard.test.js index 5fd700a8..63b5e27a 100644 --- a/tests/entity/Billboard.test.js +++ b/tests/entity/Billboard.test.js @@ -10,6 +10,4 @@ test('Testing Billboard', () => { billboard.setHeight(200); billboard.setWidth(200); expect(billboard.getSize()).toStrictEqual({ 'width': 200, 'height': 200 }); - - -}); \ No newline at end of file +}); diff --git a/tests/layer/Material.test.js b/tests/layer/Material.test.js index f7086a78..0d2b399f 100644 --- a/tests/layer/Material.test.js +++ b/tests/layer/Material.test.js @@ -1,14 +1,4 @@ import { Material } from '../../src/og/layer/Material'; -import { Worker } from '../worker'; -import { JSDOM } from 'jsdom'; - -window.Worker = Worker; - -const dom = new JSDOM('

'); -global.document = dom.window.document; -global.window = dom.window; - -global.URL.createObjectURL = jest.fn(() => ''); test('Testing Material', () => { const material = new Material('name', {}); diff --git a/tests/layer/Vector.test.js b/tests/layer/Vector.test.js index 25c7bf49..f8d334b6 100644 --- a/tests/layer/Vector.test.js +++ b/tests/layer/Vector.test.js @@ -1,14 +1,4 @@ import { Vector } from '../../src/og/layer/Vector'; -import { Worker } from '../worker'; -import { JSDOM } from 'jsdom'; - -window.Worker = Worker; - -const dom = new JSDOM('

'); -global.document = dom.window.document; -global.window = dom.window; - -global.URL.createObjectURL = jest.fn(() => ''); test('Testing Vector', () => { const vector = new Vector('name', {}); diff --git a/tests/layer/XYZ.test.js b/tests/layer/XYZ.test.js index b5120a19..36b03ca6 100644 --- a/tests/layer/XYZ.test.js +++ b/tests/layer/XYZ.test.js @@ -1,14 +1,4 @@ import { XYZ } from '../../src/og/layer/XYZ'; -import { Worker } from '../worker'; -import { JSDOM } from 'jsdom'; - -window.Worker = Worker; - -const dom = new JSDOM('

'); -global.document = dom.window.document; -global.window = dom.window; - -global.URL.createObjectURL = jest.fn(() => ''); test('Testing Extent', () => { const xyz = new XYZ('name', {}); diff --git a/tests/setupTests.js b/tests/setupTests.js new file mode 100644 index 00000000..3c2c3f4a --- /dev/null +++ b/tests/setupTests.js @@ -0,0 +1,11 @@ +import 'regenerator-runtime/runtime' +import { Worker } from './worker'; +import { JSDOM } from 'jsdom'; + +window.Worker = Worker; + +const dom = new JSDOM('

'); +global.document = dom.window.document; +global.window = dom.window; + +global.URL.createObjectURL = jest.fn(() => ''); From b432ead64eb693d0a9f88e7770b89df7f9e294fb Mon Sep 17 00:00:00 2001 From: Thibaut Lassalle Date: Mon, 25 Oct 2021 08:39:52 -0700 Subject: [PATCH 04/27] add jest types --- package-lock.json | 10 ++++++++++ package.json | 2 ++ 2 files changed, 12 insertions(+) diff --git a/package-lock.json b/package-lock.json index 7d834621..05f956c3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2118,6 +2118,16 @@ "@types/istanbul-lib-report": "*" } }, + "@types/jest": { + "version": "27.0.2", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.2.tgz", + "integrity": "sha512-4dRxkS/AFX0c5XW6IPMNOydLn2tEhNhJV7DnYK+0bjoJZ+QTmfucBlihX7aoEsh/ocYtkLC73UbnBXBXIxsULA==", + "dev": true, + "requires": { + "jest-diff": "^27.0.0", + "pretty-format": "^27.0.0" + } + }, "@types/node": { "version": "16.11.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.0.tgz", diff --git a/package.json b/package.json index 136ef656..146f315d 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "test_watch": "jest --env=jsdom --watch", "lint": "eslint src/og", "generate_types": "rm -rf types; tsc src/**/*.js --declaration --allowJs --emitDeclarationOnly --outDir types; exit 0", + "compile_js_as_ts": "tsc src/og/index.js --AllowJs --checkJs --outDir dist/@openglobus/src/", "prepare": "husky install" }, "repository": { @@ -45,6 +46,7 @@ "devDependencies": { "@babel/preset-env": "^7.15.8", "@rollup/plugin-json": "^4.1.0", + "@types/jest": "^27.0.2", "eslint": "^8.0.1", "husky": "^7.0.2", "jaguarjs-jsdoc": "^1.1.0", From a2325b006911fd142d7355b7327f7dd923182829 Mon Sep 17 00:00:00 2001 From: Thibaut Lassalle Date: Mon, 25 Oct 2021 10:10:10 -0700 Subject: [PATCH 05/27] fix annotations --- src/og/camera/PlanetCamera.js | 2 +- src/og/control/CompassButton.js | 2 +- src/og/control/DebugInfo.js | 2 +- src/og/control/EarthCoordinates.js | 2 +- src/og/control/KeyboardNavigation.js | 2 +- src/og/control/LayerSwitcher.js | 2 +- src/og/control/Lighting.js | 2 +- src/og/control/MouseNavigation.js | 2 +- src/og/control/ScaleControl.js | 2 +- src/og/control/SegmentBoundVisualization.js | 2 +- src/og/control/ShowFps.js | 2 +- src/og/control/SimpleNavigation.js | 2 +- src/og/control/Sun.js | 2 +- src/og/control/ToggleWireframe.js | 2 +- src/og/control/TouchNavigation.js | 2 +- src/og/control/ZoomControl.js | 2 +- src/og/entity/Billboard.js | 2 +- src/og/entity/Label.js | 2 +- src/og/layer/BaseGeoImage.js | 2 +- src/og/layer/CanvasTiles.js | 2 +- src/og/layer/GeoImage.js | 2 +- src/og/layer/GeoVideo.js | 2 +- src/og/layer/KML.js | 2 +- src/og/layer/Vector.js | 2 +- src/og/layer/WMS.js | 2 +- src/og/layer/XYZ.js | 2 +- src/og/scene/Planet.js | 2 +- src/og/scene/RenderNode.js | 2 +- src/og/segment/SegmentLonLat.js | 2 +- src/og/shapes/Icosphere.js | 2 +- src/og/shapes/Sphere.js | 2 +- src/og/terrain/GlobusTerrain.js | 2 +- 32 files changed, 32 insertions(+), 32 deletions(-) diff --git a/src/og/camera/PlanetCamera.js b/src/og/camera/PlanetCamera.js index 4c092fe3..af37e808 100644 --- a/src/og/camera/PlanetCamera.js +++ b/src/og/camera/PlanetCamera.js @@ -17,7 +17,7 @@ import { Mat4 } from "../math/Mat4.js"; /** * Planet camera. * @class - * @extends {og.Camera} + * @extends {Camera} * @param {og.RenderNode} planet - Planet render node. * @param {Object} [options] - Planet camera options: * @param {Object} [options.name] - Camera name. diff --git a/src/og/control/CompassButton.js b/src/og/control/CompassButton.js index 1459ba38..c9a31e36 100644 --- a/src/og/control/CompassButton.js +++ b/src/og/control/CompassButton.js @@ -82,7 +82,7 @@ let svg = ` /** * Planet compass button * @class - * @extends {og.control.Control} + * @extends {Control} * @params {Object} [options] - Control options. */ class CompassButton extends Control { diff --git a/src/og/control/DebugInfo.js b/src/og/control/DebugInfo.js index 24087556..c3f19ded 100644 --- a/src/og/control/DebugInfo.js +++ b/src/og/control/DebugInfo.js @@ -9,7 +9,7 @@ import { Control } from "./Control.js"; /** * Debug information * @class - * @extends {og.control.Control} + * @extends {Control} * @param {Object} [options] - Control options. */ class DebugInfo extends Control { diff --git a/src/og/control/EarthCoordinates.js b/src/og/control/EarthCoordinates.js index 258a047b..a0628d49 100644 --- a/src/og/control/EarthCoordinates.js +++ b/src/og/control/EarthCoordinates.js @@ -48,7 +48,7 @@ const DisplayTypesConverters = [ /** * Control displays mouse or screen center Earth coordinates. * @class - * @extends {og.control.Control} + * @extends {Control} * @param {Object} [options] - Options: * @param {Boolean} [options.center] - Earth coordiantes by screen center otherwise mouse pointer. False is default. * @param {Boolean} [options.type] - Coordinates shown: 0 - is decimal degrees, 1 - degrees, 2 - mercator geodetic coordinates. diff --git a/src/og/control/KeyboardNavigation.js b/src/og/control/KeyboardNavigation.js index 140b99f3..e3cfc2da 100644 --- a/src/og/control/KeyboardNavigation.js +++ b/src/og/control/KeyboardNavigation.js @@ -12,7 +12,7 @@ import { Vec3 } from '../math/Vec3.js'; /** * Planet camera keyboard navigation. Use W,S,A,D and left shift key for fly around a planet. * @class - * @extends {og.control.Control} + * @extends {Control} * @param {Object} [options] - Control options. */ diff --git a/src/og/control/LayerSwitcher.js b/src/og/control/LayerSwitcher.js index a59eb084..ccc58c71 100644 --- a/src/og/control/LayerSwitcher.js +++ b/src/og/control/LayerSwitcher.js @@ -9,7 +9,7 @@ import { Control } from './Control.js'; /** * Simple(OpenLayers like)layer switcher, includes base layers, overlays, geo images etc. groups. * @class - * @extends {og.control.Control} + * @extends {Control} * @param {Object} [options] - Control options. */ class LayerSwitcher extends Control { diff --git a/src/og/control/Lighting.js b/src/og/control/Lighting.js index ba4d0a7c..7e50262d 100644 --- a/src/og/control/Lighting.js +++ b/src/og/control/Lighting.js @@ -115,7 +115,7 @@ const TEMPLATE = `
/** * Helps to setup lighting. * @class - * @extends {og.control.Control} + * @extends {Control} * @param {Object} [options] - */ class Lighting extends Control { diff --git a/src/og/control/MouseNavigation.js b/src/og/control/MouseNavigation.js index 322fccc9..ab55ea47 100644 --- a/src/og/control/MouseNavigation.js +++ b/src/og/control/MouseNavigation.js @@ -18,7 +18,7 @@ import { Vec3 } from "../math/Vec3.js"; /** * Mouse planet camera dragging control. * @class - * @extends {og.control.Control} + * @extends {Control} * @param {Object} [options] - Control options. */ class MouseNavigation extends Control { diff --git a/src/og/control/ScaleControl.js b/src/og/control/ScaleControl.js index 3e94ac61..5039ef79 100644 --- a/src/og/control/ScaleControl.js +++ b/src/og/control/ScaleControl.js @@ -21,7 +21,7 @@ const TEMPLATE = `
/** * Planet zoom buttons control. * @class - * @extends {og.control.Control} + * @extends {Control} * @params {Object} [options] - Control options. */ class ScaleControl extends Control { diff --git a/src/og/control/SegmentBoundVisualization.js b/src/og/control/SegmentBoundVisualization.js index 90963ad5..5a02b689 100644 --- a/src/og/control/SegmentBoundVisualization.js +++ b/src/og/control/SegmentBoundVisualization.js @@ -7,7 +7,7 @@ import { Entity } from '../entity/Entity.js'; /** * Frame per second(FPS) display control. * @class - * @extends {og.control.Control} + * @extends {Control} * @param {Object} [options] - Control options. */ class SegmentBoundVisualization extends Control { diff --git a/src/og/control/ShowFps.js b/src/og/control/ShowFps.js index 89429f68..f41eb350 100644 --- a/src/og/control/ShowFps.js +++ b/src/og/control/ShowFps.js @@ -10,7 +10,7 @@ import { print2d } from '../utils/shared.js'; /** * Frame per second(FPS) display control. * @class - * @extends {og.control.Control} + * @extends {Control} * @param {Object} [options] - Control options. */ class ShowFps extends Control { diff --git a/src/og/control/SimpleNavigation.js b/src/og/control/SimpleNavigation.js index 7a692a64..7edf4d07 100644 --- a/src/og/control/SimpleNavigation.js +++ b/src/og/control/SimpleNavigation.js @@ -6,7 +6,7 @@ import { input } from '../input/input.js'; /** * Simple keyboard camera navigation with W,S,A,D and shift keys to fly around the scene. * @class - * @extends {og.control.Control} + * @extends {Control} * @param {Object} [options] - Control options. */ class SimpleNavigation extends Control { diff --git a/src/og/control/Sun.js b/src/og/control/Sun.js index 92aa44fb..913be1a4 100644 --- a/src/og/control/Sun.js +++ b/src/og/control/Sun.js @@ -14,7 +14,7 @@ const ACTIVATION_HEIGHT = 12079000.0; /** * Real Sun geocentric position control that place the Sun on the right place by the Earth. * @class - * @extends {og.control.Control} + * @extends {Control} * @param {Object} [options] - Control options. */ class Sun extends Control { diff --git a/src/og/control/ToggleWireframe.js b/src/og/control/ToggleWireframe.js index 3d01e66f..8bb4e0dc 100644 --- a/src/og/control/ToggleWireframe.js +++ b/src/og/control/ToggleWireframe.js @@ -10,7 +10,7 @@ import { input } from '../input/input.js'; /** * Planet GL draw mode(TRIANGLE_STRIP/LINE_STRING) changer. * @class - * @extends {og.control.Control} + * @extends {Control} * @param {Object} [options] - Control options. */ class ToggleWireframe extends Control { diff --git a/src/og/control/TouchNavigation.js b/src/og/control/TouchNavigation.js index 1b7e0f84..573659f9 100644 --- a/src/og/control/TouchNavigation.js +++ b/src/og/control/TouchNavigation.js @@ -29,7 +29,7 @@ class Touch { /** * Touch pad planet camera dragging control. * @class - * @extends {og.control.Control} + * @extends {Control} * @param {Object} [options] - Control options. */ class TouchNavigation extends Control { diff --git a/src/og/control/ZoomControl.js b/src/og/control/ZoomControl.js index 5db0c76e..93bbbd10 100644 --- a/src/og/control/ZoomControl.js +++ b/src/og/control/ZoomControl.js @@ -10,7 +10,7 @@ import { Key } from '../Lock.js'; /** * Planet zoom buttons control. * @class - * @extends {og.control.Control} + * @extends {Control} * @params {Object} [options] - Control options. */ class ZoomControl extends Control { diff --git a/src/og/entity/Billboard.js b/src/og/entity/Billboard.js index ba6a8281..4ba79685 100644 --- a/src/og/entity/Billboard.js +++ b/src/og/entity/Billboard.js @@ -9,7 +9,7 @@ import { BaseBillboard } from './BaseBillboard.js'; /** * Represents basic quad billboard image. * @class - * @extends {og.BaseBillboard} + * @extends {BaseBillboard} * @param {Object} [options] - Options: * @param {og.Vec3|Array.} [options.position] - Billboard spatial position. * @param {number} [options.rotation] - Screen angle rotaion. diff --git a/src/og/entity/Label.js b/src/og/entity/Label.js index dceb314e..478781fc 100644 --- a/src/og/entity/Label.js +++ b/src/og/entity/Label.js @@ -28,7 +28,7 @@ const STR2ALIGN = { /** * Billboard text label. * @class - * @extends {og.BaseBillboard} + * @extends {BaseBillboard} * @param {Object} [options] - Label options: * @param {og.Vec3|Array.} [options.position] - Billboard spatial position. * @param {number} [options.rotation] - Screen angle rotaion. diff --git a/src/og/layer/BaseGeoImage.js b/src/og/layer/BaseGeoImage.js index 7be749cc..b23510f9 100644 --- a/src/og/layer/BaseGeoImage.js +++ b/src/og/layer/BaseGeoImage.js @@ -12,7 +12,7 @@ import { LonLat } from '../LonLat.js'; /** * BaseGeoImage layer represents square imagery layer that could be an static image, or animated video or webgl buffer object displayed on the globe. * @class - * @extends {og.Layer} + * @extends {Layer} */ class BaseGeoImage extends Layer { constructor(name, options) { diff --git a/src/og/layer/CanvasTiles.js b/src/og/layer/CanvasTiles.js index 92ccd830..25b13451 100644 --- a/src/og/layer/CanvasTiles.js +++ b/src/og/layer/CanvasTiles.js @@ -30,7 +30,7 @@ const EVENT_NAMES = [ /** * Layer used to rendering each tile as a separate canvas object. * @class - * @extends {og.Layer} + * @extends {Layer} * //TODO: make asynchronous handler. * @param {String} [name="noname"] - Layer name. * @param {Object} options: diff --git a/src/og/layer/GeoImage.js b/src/og/layer/GeoImage.js index 7f6e0eb1..1f49d126 100644 --- a/src/og/layer/GeoImage.js +++ b/src/og/layer/GeoImage.js @@ -9,7 +9,7 @@ import { BaseGeoImage } from './BaseGeoImage.js'; /** * Used to load and display a single image over specific corner coordinates on the globe, implements og.layer.BaseGeoImage interface. * @class - * @extends {og.layer.BaseGeoImage} + * @extends {BaseGeoImage} */ class GeoImage extends BaseGeoImage { constructor(name, options) { diff --git a/src/og/layer/GeoVideo.js b/src/og/layer/GeoVideo.js index 4fc486a3..5bcdae93 100644 --- a/src/og/layer/GeoVideo.js +++ b/src/og/layer/GeoVideo.js @@ -9,7 +9,7 @@ import { BaseGeoImage } from "./BaseGeoImage.js"; /** * Used to load and display a video stream by specific corners coordinates on the globe, implements og.layer.BaseGeoImage interface. * @class - * @extends {og.layer.BaseGeoImage} + * @extends {BaseGeoImage} */ class GeoVideo extends BaseGeoImage { constructor(name, options) { diff --git a/src/og/layer/KML.js b/src/og/layer/KML.js index b3baab9e..18cf7f00 100644 --- a/src/og/layer/KML.js +++ b/src/og/layer/KML.js @@ -11,7 +11,7 @@ import { Vector } from './Vector.js'; /** * Layer to render KMLs files * @class - * @extends {og.Vector} + * @extends {Vector} */ export class KML extends Vector { diff --git a/src/og/layer/Vector.js b/src/og/layer/Vector.js index 950c61cf..69312f1a 100644 --- a/src/og/layer/Vector.js +++ b/src/og/layer/Vector.js @@ -38,7 +38,7 @@ function _entitiesConstructor(entities) { * Vector layer represents alternative entities store. Used for geospatial data rendering like * points, lines, polygons, geometry objects etc. * @class - * @extends {og.Layer} + * @extends {Layer} * @param {string} [name="noname"] - Layer name. * @param {Object} [options] - Layer options: * @param {number} [options.minZoom=0] - Minimal visible zoom. 0 is default diff --git a/src/og/layer/WMS.js b/src/og/layer/WMS.js index 22e4c5a9..fd0634a1 100644 --- a/src/og/layer/WMS.js +++ b/src/og/layer/WMS.js @@ -12,7 +12,7 @@ import { XYZ } from './XYZ.js'; /** * Used to display WMS services as tile layers on the globe. * @class - * @extends {og.layer.XYZ} + * @extends {XYZ} * //TODO: WMS version, format, and custom srs cpecification. * @param {string} name - Layer name. * @param {Object} options - Options: diff --git a/src/og/layer/XYZ.js b/src/og/layer/XYZ.js index eca22765..fda98f4d 100644 --- a/src/og/layer/XYZ.js +++ b/src/og/layer/XYZ.js @@ -13,7 +13,7 @@ import { RENDERING } from '../quadTree/quadTree.js'; /** * Represents an imagery tiles source provider. * @class - * @extends {og.Layer} + * @extends {Layer} * @param {string} name - Layer name. * @param {Object} options: * @param {number} [options.opacity=1.0] - Layer opacity. diff --git a/src/og/scene/Planet.js b/src/og/scene/Planet.js index c9a34a72..d7b10a3b 100644 --- a/src/og/scene/Planet.js +++ b/src/og/scene/Planet.js @@ -89,7 +89,7 @@ const EVENT_NAMES = [ /** * Main class for rendering planet * @class - * @extends {og.scene.RenderNode} + * @extends {RenderNode} * @param {string} name - Planet name(Earth by default) * @param {og.Ellipsoid} ellipsoid - Planet ellipsoid(WGS84 by default) * @param {Number} [maxGridSize=128] - Segment maximal grid size diff --git a/src/og/scene/RenderNode.js b/src/og/scene/RenderNode.js index 0226152c..666d3e32 100644 --- a/src/og/scene/RenderNode.js +++ b/src/og/scene/RenderNode.js @@ -10,7 +10,7 @@ import { Events } from '../Events.js'; * There are collections of ligh sources, entities and so on in the node. * Access to the node is renderer.renderNodes["Earth"] * @class - * @extends {og.RenderNode} + * @extends {RenderNode} * @param {string} name - Node name. */ class RenderNode extends BaseNode { diff --git a/src/og/segment/SegmentLonLat.js b/src/og/segment/SegmentLonLat.js index 713595e9..c95efe0b 100644 --- a/src/og/segment/SegmentLonLat.js +++ b/src/og/segment/SegmentLonLat.js @@ -19,7 +19,7 @@ let _tempHigh = new Vec3(), /** * Planet segment Web Mercator tile class that stored and rendered with quad tree. * @class - * @extends {og.planetSegment.Segment} + * @extends {Segment} * @param {og.quadNode.Node} node - Quad tree segment node. * @param {og.scene.Planet} planet - Scene planet. * @param {Number} tileZoom - Segment tile zoom index. diff --git a/src/og/shapes/Icosphere.js b/src/og/shapes/Icosphere.js index de56120a..a4c30ea7 100644 --- a/src/og/shapes/Icosphere.js +++ b/src/og/shapes/Icosphere.js @@ -8,7 +8,7 @@ import { BaseShape } from './BaseShape.js'; /** * @class - * @extends {og.shape.BaseShape} + * @extends {BaseShape} * @param {Object} options - Icosphere parameters: * @param {og.Vec3} [options.position] - Icosphere position. * @param {og.Quat} [options.orientation] - Icosphere orientation(rotation). diff --git a/src/og/shapes/Sphere.js b/src/og/shapes/Sphere.js index ba535e85..1ec81f85 100644 --- a/src/og/shapes/Sphere.js +++ b/src/og/shapes/Sphere.js @@ -8,7 +8,7 @@ import { BaseShape } from './BaseShape.js'; /** * @class - * @extends {og.shape.BaseShape} + * @extends {BaseShape} * @param {Object} options - Sphere parameters: * @param {og.Vec3} [options.position] - Sphere position. * @param {og.Quat} [options.orientation] - Sphere orientation(rotation). diff --git a/src/og/terrain/GlobusTerrain.js b/src/og/terrain/GlobusTerrain.js index 9b4b98a9..28306a9a 100644 --- a/src/og/terrain/GlobusTerrain.js +++ b/src/og/terrain/GlobusTerrain.js @@ -36,7 +36,7 @@ const EVENT_NAMES = [ /** * Class that loads segment elevation data, converts it to the array and passes it to the planet segment. * @class - * @extends {og.terrain.EmptyTerrain} + * @extends {EmptyTerrain} * @param {string} [name=""] - Terrain provider name. * @param {Object} [options] - Provider options: * @param {number} [options.minZoom=3] - Minimal visible zoom index when terrain handler works. From 9b28d00dfc6964b10fc36c4d2fae154076685074 Mon Sep 17 00:00:00 2001 From: Zemledelec Date: Tue, 26 Oct 2021 15:49:07 +0300 Subject: [PATCH 06/27] fixed bilTerrain.html --- sandbox/terrain/terrain.js | 2 +- src/og/terrain/BilTerrain.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/sandbox/terrain/terrain.js b/sandbox/terrain/terrain.js index 536980b3..a0a96e91 100644 --- a/sandbox/terrain/terrain.js +++ b/sandbox/terrain/terrain.js @@ -140,7 +140,7 @@ let emptyTerrain = new EmptyTerrain(), }), rastTerrain = new MapboxTerrain(null, { maxZoom: 19, - url: "//terrain.openglobus.org/public/256/{z}/{x}/{y}.png", + url: /*"//terrain.openglobus.org/public/oahu/{z}/{x}/{y}.png",/*/ "//terrain.openglobus.org/public/256/{z}/{x}/{y}.png", //imageSize: 129, //plainGridSize: 128, gridSizeByZoom: [ diff --git a/src/og/terrain/BilTerrain.js b/src/og/terrain/BilTerrain.js index dffd49d7..62d9d782 100644 --- a/src/og/terrain/BilTerrain.js +++ b/src/og/terrain/BilTerrain.js @@ -4,6 +4,7 @@ import { GlobusTerrain } from "./GlobusTerrain.js"; import { WMS } from "../layer/WMS.js"; import { isPowerOfTwo, nextHighestPowerOfTwo } from "../math.js"; import { getTileExtent } from "../mercator.js"; +import { Layer } from "../layer/Layer.js"; class BilTerrain extends GlobusTerrain { constructor(options) { From c2e774b49cac73f1448ef09c4cb93ddefbc7c92f Mon Sep 17 00:00:00 2001 From: Thibaut Lassalle Date: Fri, 29 Oct 2021 14:53:27 -0700 Subject: [PATCH 07/27] minor update on libs --- framework-intergration.md | 4 + package-lock.json | 1057 +++++++++++++++++++------------------ package.json | 12 +- 3 files changed, 548 insertions(+), 525 deletions(-) diff --git a/framework-intergration.md b/framework-intergration.md index 84c3225a..498fc99b 100644 --- a/framework-intergration.md +++ b/framework-intergration.md @@ -6,6 +6,10 @@ npm install @openglobus/og --save yarn add @openglobus/og ``` +### Code: using reactjs + +[example](https://github.com/tbo47/openglobus_grafana) + ### Code: using in Angular ```javascript diff --git a/package-lock.json b/package-lock.json index 05f956c3..f014f869 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@openglobus/og", - "version": "0.11.1", + "version": "0.11.2", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1039,9 +1039,9 @@ } }, "@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1122,19 +1122,23 @@ }, "dependencies": { "globals": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", - "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", "dev": true, "requires": { "type-fest": "^0.20.2" } }, - "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 + "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, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } } } }, @@ -1168,6 +1172,16 @@ "resolve-from": "^5.0.0" }, "dependencies": { + "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, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, "resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -1183,16 +1197,16 @@ "dev": true }, "@jest/console": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.2.5.tgz", - "integrity": "sha512-smtlRF9vNKorRMCUtJ+yllIoiY8oFmfFG7xlzsAE76nKEwXNhjPOJIsc7Dv+AUitVt76t+KjIpUP9m98Crn2LQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.3.1.tgz", + "integrity": "sha512-RkFNWmv0iui+qsOr/29q9dyfKTTT5DCuP31kUwg7rmOKPT/ozLeGLKJKVIiOfbiKyleUZKIrHwhmiZWVe8IMdw==", "dev": true, "requires": { "@jest/types": "^27.2.5", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.2.5", - "jest-util": "^27.2.5", + "jest-message-util": "^27.3.1", + "jest-util": "^27.3.1", "slash": "^3.0.0" }, "dependencies": { @@ -1248,15 +1262,15 @@ } }, "@jest/core": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.2.5.tgz", - "integrity": "sha512-VR7mQ+jykHN4WO3OvusRJMk4xCa2MFLipMS+43fpcRGaYrN1KwMATfVEXif7ccgFKYGy5D1TVXTNE4mGq/KMMA==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.3.1.tgz", + "integrity": "sha512-DMNE90RR5QKx0EA+wqe3/TNEwiRpOkhshKNxtLxd4rt3IZpCt+RSL+FoJsGeblRZmqdK4upHA/mKKGPPRAifhg==", "dev": true, "requires": { - "@jest/console": "^27.2.5", - "@jest/reporters": "^27.2.5", - "@jest/test-result": "^27.2.5", - "@jest/transform": "^27.2.5", + "@jest/console": "^27.3.1", + "@jest/reporters": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/transform": "^27.3.1", "@jest/types": "^27.2.5", "@types/node": "*", "ansi-escapes": "^4.2.1", @@ -1264,19 +1278,19 @@ "emittery": "^0.8.1", "exit": "^0.1.2", "graceful-fs": "^4.2.4", - "jest-changed-files": "^27.2.5", - "jest-config": "^27.2.5", - "jest-haste-map": "^27.2.5", - "jest-message-util": "^27.2.5", + "jest-changed-files": "^27.3.0", + "jest-config": "^27.3.1", + "jest-haste-map": "^27.3.1", + "jest-message-util": "^27.3.1", "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.2.5", - "jest-resolve-dependencies": "^27.2.5", - "jest-runner": "^27.2.5", - "jest-runtime": "^27.2.5", - "jest-snapshot": "^27.2.5", - "jest-util": "^27.2.5", - "jest-validate": "^27.2.5", - "jest-watcher": "^27.2.5", + "jest-resolve": "^27.3.1", + "jest-resolve-dependencies": "^27.3.1", + "jest-runner": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", + "jest-watcher": "^27.3.1", "micromatch": "^4.0.4", "rimraf": "^3.0.0", "slash": "^3.0.0", @@ -1335,52 +1349,52 @@ } }, "@jest/environment": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.2.5.tgz", - "integrity": "sha512-XvUW3q6OUF+54SYFCgbbfCd/BKTwm5b2MGLoc2jINXQLKQDTCS2P2IrpPOtQ08WWZDGzbhAzVhOYta3J2arubg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", + "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", "dev": true, "requires": { - "@jest/fake-timers": "^27.2.5", + "@jest/fake-timers": "^27.3.1", "@jest/types": "^27.2.5", "@types/node": "*", - "jest-mock": "^27.2.5" + "jest-mock": "^27.3.0" } }, "@jest/fake-timers": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.2.5.tgz", - "integrity": "sha512-ZGUb6jg7BgwY+nmO0TW10bc7z7Hl2G/UTAvmxEyZ/GgNFoa31tY9/cgXmqcxnnZ7o5Xs7RAOz3G1SKIj8IVDlg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", + "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", "dev": true, "requires": { "@jest/types": "^27.2.5", "@sinonjs/fake-timers": "^8.0.1", "@types/node": "*", - "jest-message-util": "^27.2.5", - "jest-mock": "^27.2.5", - "jest-util": "^27.2.5" + "jest-message-util": "^27.3.1", + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1" } }, "@jest/globals": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.2.5.tgz", - "integrity": "sha512-naRI537GM+enFVJQs6DcwGYPn/0vgJNb06zGVbzXfDfe/epDPV73hP1vqO37PqSKDeOXM2KInr6ymYbL1HTP7g==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.3.1.tgz", + "integrity": "sha512-Q651FWiWQAIFiN+zS51xqhdZ8g9b88nGCobC87argAxA7nMfNQq0Q0i9zTfQYgLa6qFXk2cGANEqfK051CZ8Pg==", "dev": true, "requires": { - "@jest/environment": "^27.2.5", + "@jest/environment": "^27.3.1", "@jest/types": "^27.2.5", - "expect": "^27.2.5" + "expect": "^27.3.1" } }, "@jest/reporters": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.2.5.tgz", - "integrity": "sha512-zYuR9fap3Q3mxQ454VWF8I6jYHErh368NwcKHWO2uy2fwByqBzRHkf9j2ekMDM7PaSTWcLBSZyd7NNxR1iHxzQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.3.1.tgz", + "integrity": "sha512-m2YxPmL9Qn1emFVgZGEiMwDntDxRRQ2D58tiDQlwYTg5GvbFOKseYCcHtn0WsI8CG4vzPglo3nqbOiT8ySBT/w==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.2.5", - "@jest/test-result": "^27.2.5", - "@jest/transform": "^27.2.5", + "@jest/console": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/transform": "^27.3.1", "@jest/types": "^27.2.5", "@types/node": "*", "chalk": "^4.0.0", @@ -1393,10 +1407,10 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.0.2", - "jest-haste-map": "^27.2.5", - "jest-resolve": "^27.2.5", - "jest-util": "^27.2.5", - "jest-worker": "^27.2.5", + "jest-haste-map": "^27.3.1", + "jest-resolve": "^27.3.1", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", "slash": "^3.0.0", "source-map": "^0.6.0", "string-length": "^4.0.1", @@ -1481,33 +1495,33 @@ } }, "@jest/test-result": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.2.5.tgz", - "integrity": "sha512-ub7j3BrddxZ0BdSnM5JCF6cRZJ/7j3wgdX0+Dtwhw2Po+HKsELCiXUTvh+mgS4/89mpnU1CPhZxe2mTvuLPJJg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.3.1.tgz", + "integrity": "sha512-mLn6Thm+w2yl0opM8J/QnPTqrfS4FoXsXF2WIWJb2O/GBSyResL71BRuMYbYRsGt7ELwS5JGcEcGb52BNrumgg==", "dev": true, "requires": { - "@jest/console": "^27.2.5", + "@jest/console": "^27.3.1", "@jest/types": "^27.2.5", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" } }, "@jest/test-sequencer": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.2.5.tgz", - "integrity": "sha512-8j8fHZRfnjbbdMitMAGFKaBZ6YqvFRFJlMJzcy3v75edTOqc7RY65S9JpMY6wT260zAcL2sTQRga/P4PglCu3Q==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.3.1.tgz", + "integrity": "sha512-siySLo07IMEdSjA4fqEnxfIX8lB/lWYsBPwNFtkOvsFQvmBrL3yj3k3uFNZv/JDyApTakRpxbKLJ3CT8UGVCrA==", "dev": true, "requires": { - "@jest/test-result": "^27.2.5", + "@jest/test-result": "^27.3.1", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.2.5", - "jest-runtime": "^27.2.5" + "jest-haste-map": "^27.3.1", + "jest-runtime": "^27.3.1" } }, "@jest/transform": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.2.5.tgz", - "integrity": "sha512-29lRtAHHYGALbZOx343v0zKmdOg4Sb0rsA1uSv0818bvwRhs3TyElOmTVXlrw0v1ZTqXJCAH/cmoDXimBhQOJQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", + "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", "dev": true, "requires": { "@babel/core": "^7.1.0", @@ -1517,9 +1531,9 @@ "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.2.5", + "jest-haste-map": "^27.3.1", "jest-regex-util": "^27.0.6", - "jest-util": "^27.2.5", + "jest-util": "^27.3.1", "micromatch": "^4.0.4", "pirates": "^4.0.1", "slash": "^3.0.0", @@ -1987,31 +2001,17 @@ "dev": true, "requires": { "@rollup/pluginutils": "^3.0.8" - }, - "dependencies": { - "@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dev": true, - "requires": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - } - }, - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - }, - "estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true - } + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" } }, "@sinonjs/commons": { @@ -2085,6 +2085,12 @@ "@babel/types": "^7.3.0" } }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, "@types/graceful-fs": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", @@ -2129,9 +2135,9 @@ } }, "@types/node": { - "version": "16.11.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.0.tgz", - "integrity": "sha512-8MLkBIYQMuhRBQzGN9875bYsOhPnf/0rgXGo66S2FemHkhbn9qtsz9ywV1iCG+vbjigE4WUNVvw37Dx+L0qsPg==", + "version": "16.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", + "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==", "dev": true }, "@types/parse-json": { @@ -2288,6 +2294,14 @@ "dev": true, "requires": { "type-fest": "^0.21.3" + }, + "dependencies": { + "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 + } } }, "ansi-regex": { @@ -2361,12 +2375,12 @@ "dev": true }, "babel-jest": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.2.5.tgz", - "integrity": "sha512-GC9pWCcitBhSuF7H3zl0mftoKizlswaF0E3qi+rPL417wKkCB0d+Sjjb0OfXvxj7gWiBf497ldgRMii68Xz+2g==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.3.1.tgz", + "integrity": "sha512-SjIF8hh/ir0peae2D6S6ZKRhUy7q/DnpH7k/V6fT4Bgs/LXXUztOpX4G2tCgq8mLo5HA9mN6NmlFMeYtKmIsTQ==", "dev": true, "requires": { - "@jest/transform": "^27.2.5", + "@jest/transform": "^27.3.1", "@jest/types": "^27.2.5", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.0.0", @@ -2437,16 +2451,31 @@ } }, "babel-plugin-istanbul": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", - "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "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, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-instrument": "^5.0.4", "test-exclude": "^6.0.0" + }, + "dependencies": { + "istanbul-lib-instrument": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", + "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", + "dev": true, + "requires": { + "@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" + } + } } }, "babel-plugin-jest-hoist": { @@ -2598,16 +2627,16 @@ "dev": true }, "browserslist": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.3.tgz", - "integrity": "sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ==", + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.5.tgz", + "integrity": "sha512-I3ekeB92mmpctWBoLXe0d5wPS2cBuRvvW0JyyJHMrk9/HmP2ZjrTboNAZ8iuGqaEIlKguljbQY32OkOJIRrgoA==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001264", - "electron-to-chromium": "^1.3.857", + "caniuse-lite": "^1.0.30001271", + "electron-to-chromium": "^1.3.878", "escalade": "^3.1.1", - "node-releases": "^1.1.77", - "picocolors": "^0.2.1" + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" } }, "bser": { @@ -2698,9 +2727,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001265", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz", - "integrity": "sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw==", + "version": "1.0.30001272", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001272.tgz", + "integrity": "sha512-DV1j9Oot5dydyH1v28g25KoVm7l8MTxazwuiH3utWiAS6iL/9Nh//TGwqFEeqqN8nnWYQ8HHhUq+o4QPt9kvYw==", "dev": true }, "catharsis": { @@ -2860,9 +2889,9 @@ "dev": true }, "colord": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.8.0.tgz", - "integrity": "sha512-kNkVV4KFta3TYQv0bzs4xNwLaeag261pxgzGQSh4cQ1rEhYjcTJfFRP0SDlbhLONg0eSoLzrDd79PosjbltufA==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.1.tgz", + "integrity": "sha512-4LBMSt09vR0uLnPVkOUBnmxgoaeN4ewRbx801wY/bXcltXfpR/G46OdWn96XpYmCWuYvO46aBZP4NgX8HpNAcw==", "dev": true }, "colorette": { @@ -2939,9 +2968,9 @@ } }, "commander": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.2.0.tgz", - "integrity": "sha512-LLKxDvHeL91/8MIyTAD5BFMNtoIwztGPMiM/7Bl8rIPmHCZXRxmSWr91h57dpOpnQ6jIUqEWdXE/uBYMfiVZDA==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true }, "common-log-format": { @@ -3029,12 +3058,12 @@ "dev": true }, "core-js-compat": { - "version": "3.18.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.18.2.tgz", - "integrity": "sha512-25VJYCJtGjZwLguj7d66oiHfmnVw3TMOZ0zV8DyMJp/aeQ3OjR519iOOeck08HMyVVRAqXxafc2Hl+5QstJrsQ==", + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.0.tgz", + "integrity": "sha512-R09rKZ56ccGBebjTLZHvzDxhz93YPT37gBm6qUhnwj3Kt7aCjjZWD1injyNbyeFHxNKfeZBSyds6O9n3MKq1sw==", "dev": true, "requires": { - "browserslist": "^4.17.3", + "browserslist": "^4.17.5", "semver": "7.0.0" }, "dependencies": { @@ -3129,9 +3158,9 @@ } }, "css-what": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", - "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", "dev": true }, "cssesc": { @@ -3422,9 +3451,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.862", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.862.tgz", - "integrity": "sha512-o+FMbCD+hAUJ9S8bfz/FaqA0gE8OpCCm58KhhGogOEqiA1BLFSoVYLi+tW+S/ZavnqBn++n0XZm7HQiBVPs8Jg==", + "version": "1.3.884", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.884.tgz", + "integrity": "sha512-kOaCAa+biA98PwH5BpCkeUeTL6mCeg8p3Q3OhqzPyqhu/5QUnWAN2wr/3IK8xMQxIV76kfoQpP+Bn/wij/jXrg==", "dev": true }, "emittery": { @@ -3506,19 +3535,58 @@ "source-map": "~0.6.1" }, "dependencies": { + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } } } }, "eslint": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.0.1.tgz", - "integrity": "sha512-LsgcwZgQ72vZ+SMp4K6pAnk2yFDWL7Ti4pJaRvsZ0Hsw2h8ZjUIW38a9AFn2cZXdBMlScMFYYgsSp4ttFI/0bA==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.1.0.tgz", + "integrity": "sha512-JZvNneArGSUsluHWJ8g8MMs3CfIEzwaLx9KyH4tZ2i+R2/rPWzL8c0zg3rHdwYVpN/1sB9gqnjHwz9HoeJpGHw==", "dev": true, "requires": { "@eslint/eslintrc": "^1.0.3", @@ -3570,12 +3638,6 @@ "color-convert": "^2.0.1" } }, - "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 - }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -3608,9 +3670,9 @@ "dev": true }, "globals": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", - "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -3622,45 +3684,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "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, - "requires": { - "argparse": "^2.0.1" - } - }, - "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, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "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 - }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -3678,21 +3701,6 @@ "requires": { "has-flag": "^4.0.0" } - }, - "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, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "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 } } }, @@ -3738,14 +3746,6 @@ "acorn": "^8.5.0", "acorn-jsx": "^5.3.1", "eslint-visitor-keys": "^3.0.0" - }, - "dependencies": { - "acorn": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", - "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", - "dev": true - } } }, "esprima": { @@ -3773,15 +3773,15 @@ } }, "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true }, "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", "dev": true }, "esutils": { @@ -3832,16 +3832,16 @@ "dev": true }, "expect": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.2.5.tgz", - "integrity": "sha512-ZrO0w7bo8BgGoP/bLz+HDCI+0Hfei9jUSZs5yI/Wyn9VkG9w8oJ7rHRgYj+MA7yqqFa0IwHA3flJzZtYugShJA==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz", + "integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==", "dev": true, "requires": { "@jest/types": "^27.2.5", "ansi-styles": "^5.0.0", - "jest-get-type": "^27.0.6", - "jest-matcher-utils": "^27.2.5", - "jest-message-util": "^27.2.5", + "jest-get-type": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", "jest-regex-util": "^27.0.6" }, "dependencies": { @@ -4209,9 +4209,9 @@ "dev": true }, "husky": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.2.tgz", - "integrity": "sha512-8yKEWNX4z2YsofXAMT7KvA1g8p+GxtB1ffV8XtpAEGuXNAbCV5wdNKH+qTpw8SM9fh4aMPDR+yQuKfgnreyZlg==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz", + "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==", "dev": true }, "iconv-lite": { @@ -4339,19 +4339,10 @@ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, - "is-ci": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", - "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", - "dev": true, - "requires": { - "ci-info": "^3.1.1" - } - }, "is-core-module": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.7.0.tgz", - "integrity": "sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", "dev": true, "requires": { "has": "^1.0.3" @@ -4475,9 +4466,9 @@ "dev": true }, "istanbul-lib-coverage": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.2.tgz", - "integrity": "sha512-o5+eTUYzCJ11/+JhW5/FUCdfsdoYVdQ/8I/OveE2XsjehYn5DdeSnNQAbjYaO8gQ6hvGTN6GM6ddQqpTVG5j8g==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true }, "istanbul-lib-instrument": { @@ -4560,14 +4551,14 @@ } }, "jest": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.2.5.tgz", - "integrity": "sha512-vDMzXcpQN4Ycaqu+vO7LX8pZwNNoKMhc+gSp6q1D8S6ftRk8gNW8cni3YFxknP95jxzQo23Lul0BI2FrWgnwYQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.3.1.tgz", + "integrity": "sha512-U2AX0AgQGd5EzMsiZpYt8HyZ+nSVIh5ujQ9CPp9EQZJMjXIiSZpJNweZl0swatKRoqHWgGKM3zaSwm4Zaz87ng==", "dev": true, "requires": { - "@jest/core": "^27.2.5", + "@jest/core": "^27.3.1", "import-local": "^3.0.2", - "jest-cli": "^27.2.5" + "jest-cli": "^27.3.1" }, "dependencies": { "ansi-styles": { @@ -4611,21 +4602,21 @@ "dev": true }, "jest-cli": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.2.5.tgz", - "integrity": "sha512-XzfcOXi5WQrXqFYsDxq5RDOKY4FNIgBgvgf3ZBz4e/j5/aWep5KnsAYH5OFPMdX/TP/LFsYQMRH7kzJUMh6JKg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.3.1.tgz", + "integrity": "sha512-WHnCqpfK+6EvT62me6WVs8NhtbjAS4/6vZJnk7/2+oOr50cwAzG4Wxt6RXX0hu6m1169ZGMlhYYUNeKBXCph/Q==", "dev": true, "requires": { - "@jest/core": "^27.2.5", - "@jest/test-result": "^27.2.5", + "@jest/core": "^27.3.1", + "@jest/test-result": "^27.3.1", "@jest/types": "^27.2.5", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.4", "import-local": "^3.0.2", - "jest-config": "^27.2.5", - "jest-util": "^27.2.5", - "jest-validate": "^27.2.5", + "jest-config": "^27.3.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", "prompts": "^2.0.1", "yargs": "^16.2.0" } @@ -4652,9 +4643,9 @@ } }, "jest-changed-files": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.2.5.tgz", - "integrity": "sha512-jfnNJzF89csUKRPKJ4MwZ1SH27wTmX2xiAIHUHrsb/OYd9Jbo4/SXxJ17/nnx6RIifpthk3Y+LEeOk+/dDeGdw==", + "version": "27.3.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.3.0.tgz", + "integrity": "sha512-9DJs9garMHv4RhylUMZgbdCJ3+jHSkpL9aaVKp13xtXAD80qLTLrqcDZL1PHA9dYA0bCI86Nv2BhkLpLhrBcPg==", "dev": true, "requires": { "@jest/types": "^27.2.5", @@ -4663,27 +4654,27 @@ } }, "jest-circus": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.2.5.tgz", - "integrity": "sha512-eyL9IcrAxm3Saq3rmajFCwpaxaRMGJ1KJs+7hlTDinXpJmeR3P02bheM3CYohE7UfwOBmrFMJHjgo/WPcLTM+Q==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.3.1.tgz", + "integrity": "sha512-v1dsM9II6gvXokgqq6Yh2jHCpfg7ZqV4jWY66u7npz24JnhP3NHxI0sKT7+ZMQ7IrOWHYAaeEllOySbDbWsiXw==", "dev": true, "requires": { - "@jest/environment": "^27.2.5", - "@jest/test-result": "^27.2.5", + "@jest/environment": "^27.3.1", + "@jest/test-result": "^27.3.1", "@jest/types": "^27.2.5", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", - "expect": "^27.2.5", + "expect": "^27.3.1", "is-generator-fn": "^2.0.0", - "jest-each": "^27.2.5", - "jest-matcher-utils": "^27.2.5", - "jest-message-util": "^27.2.5", - "jest-runtime": "^27.2.5", - "jest-snapshot": "^27.2.5", - "jest-util": "^27.2.5", - "pretty-format": "^27.2.5", + "jest-each": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "pretty-format": "^27.3.1", "slash": "^3.0.0", "stack-utils": "^2.0.3", "throat": "^6.0.1" @@ -4741,32 +4732,32 @@ } }, "jest-config": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.2.5.tgz", - "integrity": "sha512-QdENtn9b5rIIYGlbDNEcgY9LDL5kcokJnXrp7x8AGjHob/XFqw1Z6p+gjfna2sUulQsQ3ce2Fvntnv+7fKYDhQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.3.1.tgz", + "integrity": "sha512-KY8xOIbIACZ/vdYCKSopL44I0xboxC751IX+DXL2+Wx6DKNycyEfV3rryC3BPm5Uq/BBqDoMrKuqLEUNJmMKKg==", "dev": true, "requires": { "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.2.5", + "@jest/test-sequencer": "^27.3.1", "@jest/types": "^27.2.5", - "babel-jest": "^27.2.5", + "babel-jest": "^27.3.1", "chalk": "^4.0.0", + "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.1", "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "jest-circus": "^27.2.5", - "jest-environment-jsdom": "^27.2.5", - "jest-environment-node": "^27.2.5", - "jest-get-type": "^27.0.6", - "jest-jasmine2": "^27.2.5", + "jest-circus": "^27.3.1", + "jest-environment-jsdom": "^27.3.1", + "jest-environment-node": "^27.3.1", + "jest-get-type": "^27.3.1", + "jest-jasmine2": "^27.3.1", "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.2.5", - "jest-runner": "^27.2.5", - "jest-util": "^27.2.5", - "jest-validate": "^27.2.5", + "jest-resolve": "^27.3.1", + "jest-runner": "^27.3.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", "micromatch": "^4.0.4", - "pretty-format": "^27.2.5" + "pretty-format": "^27.3.1" }, "dependencies": { "ansi-styles": { @@ -4821,15 +4812,15 @@ } }, "jest-diff": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.2.5.tgz", - "integrity": "sha512-7gfwwyYkeslOOVQY4tVq5TaQa92mWfC9COsVYMNVYyJTOYAqbIkoD3twi5A+h+tAPtAelRxkqY6/xu+jwTr0dA==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz", + "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==", "dev": true, "requires": { "chalk": "^4.0.0", "diff-sequences": "^27.0.6", - "jest-get-type": "^27.0.6", - "pretty-format": "^27.2.5" + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" }, "dependencies": { "ansi-styles": { @@ -4893,16 +4884,16 @@ } }, "jest-each": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.2.5.tgz", - "integrity": "sha512-HUPWIbJT0bXarRwKu/m7lYzqxR4GM5EhKOsu0z3t0SKtbFN6skQhpAUADM4qFShBXb9zoOuag5lcrR1x/WM+Ag==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.3.1.tgz", + "integrity": "sha512-E4SwfzKJWYcvOYCjOxhZcxwL+AY0uFMvdCOwvzgutJiaiodFjkxQQDxHm8FQBeTqDnSmKsQWn7ldMRzTn2zJaQ==", "dev": true, "requires": { "@jest/types": "^27.2.5", "chalk": "^4.0.0", - "jest-get-type": "^27.0.6", - "jest-util": "^27.2.5", - "pretty-format": "^27.2.5" + "jest-get-type": "^27.3.1", + "jest-util": "^27.3.1", + "pretty-format": "^27.3.1" }, "dependencies": { "ansi-styles": { @@ -4957,44 +4948,44 @@ } }, "jest-environment-jsdom": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.2.5.tgz", - "integrity": "sha512-QtRpOh/RQKuXniaWcoFE2ElwP6tQcyxHu0hlk32880g0KczdonCs5P1sk5+weu/OVzh5V4Bt1rXuQthI01mBLg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.3.1.tgz", + "integrity": "sha512-3MOy8qMzIkQlfb3W1TfrD7uZHj+xx8Olix5vMENkj5djPmRqndMaXtpnaZkxmxM+Qc3lo+yVzJjzuXbCcZjAlg==", "dev": true, "requires": { - "@jest/environment": "^27.2.5", - "@jest/fake-timers": "^27.2.5", + "@jest/environment": "^27.3.1", + "@jest/fake-timers": "^27.3.1", "@jest/types": "^27.2.5", "@types/node": "*", - "jest-mock": "^27.2.5", - "jest-util": "^27.2.5", + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1", "jsdom": "^16.6.0" } }, "jest-environment-node": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.2.5.tgz", - "integrity": "sha512-0o1LT4grm7iwrS8fIoLtwJxb/hoa3GsH7pP10P02Jpj7Mi4BXy65u46m89vEM2WfD1uFJQ2+dfDiWZNA2e6bJg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.3.1.tgz", + "integrity": "sha512-T89F/FgkE8waqrTSA7/ydMkcc52uYPgZZ6q8OaZgyiZkJb5QNNCF6oPZjH9IfPFfcc9uBWh1574N0kY0pSvTXw==", "dev": true, "requires": { - "@jest/environment": "^27.2.5", - "@jest/fake-timers": "^27.2.5", + "@jest/environment": "^27.3.1", + "@jest/fake-timers": "^27.3.1", "@jest/types": "^27.2.5", "@types/node": "*", - "jest-mock": "^27.2.5", - "jest-util": "^27.2.5" + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1" } }, "jest-get-type": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", - "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", + "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", "dev": true }, "jest-haste-map": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.2.5.tgz", - "integrity": "sha512-pzO+Gw2WLponaSi0ilpzYBE0kuVJstoXBX8YWyUebR8VaXuX4tzzn0Zp23c/WaETo7XYTGv2e8KdnpiskAFMhQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", + "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", "dev": true, "requires": { "@jest/types": "^27.2.5", @@ -5006,35 +4997,35 @@ "graceful-fs": "^4.2.4", "jest-regex-util": "^27.0.6", "jest-serializer": "^27.0.6", - "jest-util": "^27.2.5", - "jest-worker": "^27.2.5", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", "micromatch": "^4.0.4", "walker": "^1.0.7" } }, "jest-jasmine2": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.2.5.tgz", - "integrity": "sha512-hdxY9Cm/CjLqu2tXeAoQHPgA4vcqlweVXYOg1+S9FeFdznB9Rti+eEBKDDkmOy9iqr4Xfbq95OkC4NFbXXPCAQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.3.1.tgz", + "integrity": "sha512-WK11ZUetDQaC09w4/j7o4FZDUIp+4iYWH/Lik34Pv7ukL+DuXFGdnmmi7dT58J2ZYKFB5r13GyE0z3NPeyJmsg==", "dev": true, "requires": { "@babel/traverse": "^7.1.0", - "@jest/environment": "^27.2.5", + "@jest/environment": "^27.3.1", "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.2.5", + "@jest/test-result": "^27.3.1", "@jest/types": "^27.2.5", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "expect": "^27.2.5", + "expect": "^27.3.1", "is-generator-fn": "^2.0.0", - "jest-each": "^27.2.5", - "jest-matcher-utils": "^27.2.5", - "jest-message-util": "^27.2.5", - "jest-runtime": "^27.2.5", - "jest-snapshot": "^27.2.5", - "jest-util": "^27.2.5", - "pretty-format": "^27.2.5", + "jest-each": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "pretty-format": "^27.3.1", "throat": "^6.0.1" }, "dependencies": { @@ -5090,25 +5081,25 @@ } }, "jest-leak-detector": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.2.5.tgz", - "integrity": "sha512-HYsi3GUR72bYhOGB5C5saF9sPdxGzSjX7soSQS+BqDRysc7sPeBwPbhbuT8DnOpijnKjgwWQ8JqvbmReYnt3aQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.3.1.tgz", + "integrity": "sha512-78QstU9tXbaHzwlRlKmTpjP9k4Pvre5l0r8Spo4SbFFVy/4Abg9I6ZjHwjg2QyKEAMg020XcjP+UgLZIY50yEg==", "dev": true, "requires": { - "jest-get-type": "^27.0.6", - "pretty-format": "^27.2.5" + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" } }, "jest-matcher-utils": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.2.5.tgz", - "integrity": "sha512-qNR/kh6bz0Dyv3m68Ck2g1fLW5KlSOUNcFQh87VXHZwWc/gY6XwnKofx76Qytz3x5LDWT09/2+yXndTkaG4aWg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz", + "integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==", "dev": true, "requires": { "chalk": "^4.0.0", - "jest-diff": "^27.2.5", - "jest-get-type": "^27.0.6", - "pretty-format": "^27.2.5" + "jest-diff": "^27.3.1", + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" }, "dependencies": { "ansi-styles": { @@ -5163,9 +5154,9 @@ } }, "jest-message-util": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.2.5.tgz", - "integrity": "sha512-ggXSLoPfIYcbmZ8glgEJZ8b+e0Msw/iddRmgkoO7lDAr9SmI65IIfv7VnvTnV4FGnIIUIjzM+fHRHO5RBvyAbQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.3.1.tgz", + "integrity": "sha512-bh3JEmxsTZ/9rTm0jQrPElbY2+y48Rw2t47uMfByNyUVR+OfPh4anuyKsGqsNkXk/TI4JbLRZx+7p7Hdt6q1yg==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", @@ -5174,7 +5165,7 @@ "chalk": "^4.0.0", "graceful-fs": "^4.2.4", "micromatch": "^4.0.4", - "pretty-format": "^27.2.5", + "pretty-format": "^27.3.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -5231,9 +5222,9 @@ } }, "jest-mock": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.2.5.tgz", - "integrity": "sha512-HiMB3LqE9RzmeMzZARi2Bz3NoymxyP0gCid4y42ca1djffNtYFKgI220aC1VP1mUZ8rbpqZbHZOJ15093bZV/Q==", + "version": "27.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", + "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", "dev": true, "requires": { "@jest/types": "^27.2.5", @@ -5253,20 +5244,20 @@ "dev": true }, "jest-resolve": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.2.5.tgz", - "integrity": "sha512-q5irwS3oS73SKy3+FM/HL2T7WJftrk9BRzrXF92f7net5HMlS7lJMg/ZwxLB4YohKqjSsdksEw7n/jvMxV7EKg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.3.1.tgz", + "integrity": "sha512-Dfzt25CFSPo3Y3GCbxynRBZzxq9AdyNN+x/v2IqYx6KVT5Z6me2Z/PsSGFSv3cOSUZqJ9pHxilao/I/m9FouLw==", "dev": true, "requires": { "@jest/types": "^27.2.5", "chalk": "^4.0.0", - "escalade": "^3.1.1", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.2.5", + "jest-haste-map": "^27.3.1", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.2.5", - "jest-validate": "^27.2.5", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", "slash": "^3.0.0" }, "dependencies": { @@ -5322,26 +5313,26 @@ } }, "jest-resolve-dependencies": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.2.5.tgz", - "integrity": "sha512-BSjefped31bcvvCh++/pN9ueqqN1n0+p8/58yScuWfklLm2tbPbS9d251vJhAy0ZI2pL/0IaGhOTJrs9Y4FJlg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.3.1.tgz", + "integrity": "sha512-X7iLzY8pCiYOnvYo2YrK3P9oSE8/3N2f4pUZMJ8IUcZnT81vlSonya1KTO9ZfKGuC+svE6FHK/XOb8SsoRUV1A==", "dev": true, "requires": { "@jest/types": "^27.2.5", "jest-regex-util": "^27.0.6", - "jest-snapshot": "^27.2.5" + "jest-snapshot": "^27.3.1" } }, "jest-runner": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.2.5.tgz", - "integrity": "sha512-n41vw9RLg5TKAnEeJK9d6pGOsBOpwE89XBniK+AD1k26oIIy3V7ogM1scbDjSheji8MUPC9pNgCrZ/FHLVDNgg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.3.1.tgz", + "integrity": "sha512-r4W6kBn6sPr3TBwQNmqE94mPlYVn7fLBseeJfo4E2uCTmAyDFm2O5DYAQAFP7Q3YfiA/bMwg8TVsciP7k0xOww==", "dev": true, "requires": { - "@jest/console": "^27.2.5", - "@jest/environment": "^27.2.5", - "@jest/test-result": "^27.2.5", - "@jest/transform": "^27.2.5", + "@jest/console": "^27.3.1", + "@jest/environment": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/transform": "^27.3.1", "@jest/types": "^27.2.5", "@types/node": "*", "chalk": "^4.0.0", @@ -5349,15 +5340,15 @@ "exit": "^0.1.2", "graceful-fs": "^4.2.4", "jest-docblock": "^27.0.6", - "jest-environment-jsdom": "^27.2.5", - "jest-environment-node": "^27.2.5", - "jest-haste-map": "^27.2.5", - "jest-leak-detector": "^27.2.5", - "jest-message-util": "^27.2.5", - "jest-resolve": "^27.2.5", - "jest-runtime": "^27.2.5", - "jest-util": "^27.2.5", - "jest-worker": "^27.2.5", + "jest-environment-jsdom": "^27.3.1", + "jest-environment-node": "^27.3.1", + "jest-haste-map": "^27.3.1", + "jest-leak-detector": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-resolve": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", "source-map-support": "^0.5.6", "throat": "^6.0.1" }, @@ -5414,18 +5405,17 @@ } }, "jest-runtime": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.2.5.tgz", - "integrity": "sha512-N0WRZ3QszKyZ3Dm27HTBbBuestsSd3Ud5ooVho47XZJ8aSKO/X1Ag8M1dNx9XzfGVRNdB/xCA3lz8MJwIzPLLA==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.3.1.tgz", + "integrity": "sha512-qtO6VxPbS8umqhEDpjA4pqTkKQ1Hy4ZSi9mDVeE9Za7LKBo2LdW2jmT+Iod3XFaJqINikZQsn2wEi0j9wPRbLg==", "dev": true, "requires": { - "@jest/console": "^27.2.5", - "@jest/environment": "^27.2.5", - "@jest/fake-timers": "^27.2.5", - "@jest/globals": "^27.2.5", + "@jest/console": "^27.3.1", + "@jest/environment": "^27.3.1", + "@jest/globals": "^27.3.1", "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.2.5", - "@jest/transform": "^27.2.5", + "@jest/test-result": "^27.3.1", + "@jest/transform": "^27.3.1", "@jest/types": "^27.2.5", "@types/yargs": "^16.0.0", "chalk": "^4.0.0", @@ -5435,14 +5425,14 @@ "exit": "^0.1.2", "glob": "^7.1.3", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.2.5", - "jest-message-util": "^27.2.5", - "jest-mock": "^27.2.5", + "jest-haste-map": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-mock": "^27.3.0", "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.2.5", - "jest-snapshot": "^27.2.5", - "jest-util": "^27.2.5", - "jest-validate": "^27.2.5", + "jest-resolve": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", "slash": "^3.0.0", "strip-bom": "^4.0.0", "yargs": "^16.2.0" @@ -5510,9 +5500,9 @@ } }, "jest-snapshot": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.2.5.tgz", - "integrity": "sha512-2/Jkn+VN6Abwz0llBltZaiJMnL8b1j5Bp/gRIxe9YR3FCEh9qp0TXVV0dcpTGZ8AcJV1SZGQkczewkI9LP5yGw==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.3.1.tgz", + "integrity": "sha512-APZyBvSgQgOT0XumwfFu7X3G5elj6TGhCBLbBdn3R1IzYustPGPE38F51dBWMQ8hRXa9je0vAdeVDtqHLvB6lg==", "dev": true, "requires": { "@babel/core": "^7.7.2", @@ -5521,23 +5511,23 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.0.0", - "@jest/transform": "^27.2.5", + "@jest/transform": "^27.3.1", "@jest/types": "^27.2.5", "@types/babel__traverse": "^7.0.4", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.2.5", + "expect": "^27.3.1", "graceful-fs": "^4.2.4", - "jest-diff": "^27.2.5", - "jest-get-type": "^27.0.6", - "jest-haste-map": "^27.2.5", - "jest-matcher-utils": "^27.2.5", - "jest-message-util": "^27.2.5", - "jest-resolve": "^27.2.5", - "jest-util": "^27.2.5", + "jest-diff": "^27.3.1", + "jest-get-type": "^27.3.1", + "jest-haste-map": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-resolve": "^27.3.1", + "jest-util": "^27.3.1", "natural-compare": "^1.4.0", - "pretty-format": "^27.2.5", + "pretty-format": "^27.3.1", "semver": "^7.3.2" }, "dependencies": { @@ -5602,16 +5592,16 @@ } }, "jest-util": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.5.tgz", - "integrity": "sha512-QRhDC6XxISntMzFRd/OQ6TGsjbzA5ONO0tlAj2ElHs155x1aEr0rkYJBEysG6H/gZVH3oGFzCdAB/GA8leh8NQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", "dev": true, "requires": { "@jest/types": "^27.2.5", "@types/node": "*", "chalk": "^4.0.0", + "ci-info": "^3.2.0", "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", "picomatch": "^2.2.3" }, "dependencies": { @@ -5667,17 +5657,17 @@ } }, "jest-validate": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.2.5.tgz", - "integrity": "sha512-XgYtjS89nhVe+UfkbLgcm+GgXKWgL80t9nTcNeejyO3t0Sj/yHE8BtIJqjZu9NXQksYbGImoQRXmQ1gP+Guffw==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.3.1.tgz", + "integrity": "sha512-3H0XCHDFLA9uDII67Bwi1Vy7AqwA5HqEEjyy934lgVhtJ3eisw6ShOF1MDmRPspyikef5MyExvIm0/TuLzZ86Q==", "dev": true, "requires": { "@jest/types": "^27.2.5", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.0.6", + "jest-get-type": "^27.3.1", "leven": "^3.1.0", - "pretty-format": "^27.2.5" + "pretty-format": "^27.3.1" }, "dependencies": { "ansi-styles": { @@ -5738,17 +5728,17 @@ } }, "jest-watcher": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.2.5.tgz", - "integrity": "sha512-umV4qGozg2Dn6DTTtqAh9puPw+DGLK9AQas7+mWjiK8t0fWMpxKg8ZXReZw7L4C88DqorsGUiDgwHNZ+jkVrkQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.3.1.tgz", + "integrity": "sha512-9/xbV6chABsGHWh9yPaAGYVVKurWoP3ZMCv6h+O1v9/+pkOroigs6WzZ0e9gLP/njokUwM7yQhr01LKJVMkaZA==", "dev": true, "requires": { - "@jest/test-result": "^27.2.5", + "@jest/test-result": "^27.3.1", "@jest/types": "^27.2.5", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.2.5", + "jest-util": "^27.3.1", "string-length": "^4.0.1" }, "dependencies": { @@ -5814,9 +5804,9 @@ } }, "jest-worker": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.5.tgz", - "integrity": "sha512-HTjEPZtcNKZ4LnhSp02NEH4vE+5OpJ0EsOWYvGQpHgUMLngydESAAMH5Wd/asPf29+XUDQZszxpLg1BkIIA2aw==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", + "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", "dev": true, "requires": { "@types/node": "*", @@ -5867,13 +5857,20 @@ "dev": true }, "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==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" + }, + "dependencies": { + "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 + } } }, "js2xmlparser": { @@ -5913,12 +5910,6 @@ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, "taffydb": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", @@ -6032,9 +6023,9 @@ "dev": true }, "koa": { - "version": "2.13.3", - "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.3.tgz", - "integrity": "sha512-XhXIoR+ylAwqG3HhXwnMPQAM/4xfywz52OvxZNmxmTWGGHsvmBv4NSIhURha6yMuvEex1WdtplUTHnxnKpQiGw==", + "version": "2.13.4", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.4.tgz", + "integrity": "sha512-43zkIKubNbnrULWlHdN5h1g3SEKXOEzoAlRsHOTFpnlDu8JlAOZSMJBLULusuXRequboiwJcj5vtYXKB3k7+2g==", "dev": true, "requires": { "accepts": "^1.3.5", @@ -6226,13 +6217,13 @@ "dev": true }, "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "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, "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" } }, "lilconfig": { @@ -6257,9 +6248,9 @@ } }, "lint-staged": { - "version": "11.2.3", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-11.2.3.tgz", - "integrity": "sha512-Tfmhk8O2XFMD25EswHPv+OYhUjsijy5D7liTdxeXvhG2rsadmOLFtyj8lmlfoFFXY8oXWAIOKpoI+lJe1DB1mw==", + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-11.2.6.tgz", + "integrity": "sha512-Vti55pUnpvPE0J9936lKl0ngVeTdSZpEdTNhASbkaWX7J5R9OEifo1INBGQuGW4zmy6OG+TcWPJ3m5yuy5Q8Tg==", "dev": true, "requires": { "cli-truncate": "2.1.0", @@ -6296,18 +6287,26 @@ } }, "listr2": { - "version": "3.12.2", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.12.2.tgz", - "integrity": "sha512-64xC2CJ/As/xgVI3wbhlPWVPx0wfTqbUAkpb7bjDi0thSWMqrf07UFhrfsGoo8YSXmF049Rp9C0cjLC8rZxK9A==", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.13.1.tgz", + "integrity": "sha512-pk4YBDA2cxtpM8iLHbz6oEsfZieJKHf6Pt19NlKaHZZVpqHyVs/Wqr7RfBBCeAFCJchGO7WQHVkUPZTvJMHk8w==", "dev": true, "requires": { "cli-truncate": "^2.1.0", - "colorette": "^1.4.0", + "colorette": "^2.0.16", "log-update": "^4.0.0", "p-map": "^4.0.0", "rxjs": "^6.6.7", "through": "^2.3.8", "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + } } }, "load-bmfont": { @@ -6509,25 +6508,25 @@ } }, "lws": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lws/-/lws-4.1.0.tgz", - "integrity": "sha512-M7vbo6ovQFOppgF/vp00c7ukX77KJJaDsYyX/Uiv57TRnWTOY9ctl+ipHNto+l6PQKVhpgObB521t1cNMn/bOw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lws/-/lws-4.1.1.tgz", + "integrity": "sha512-x4PbfhQaoPkCncSNa39ZblHVUJa/BHzRXhdiNSRI7C6XHW0++tr5ELBDQLVtYH0b+e+eXHxnPq6DrkzUoqQn4g==", "dev": true, "requires": { - "@75lb/deep-merge": "^1.0.0", - "ansi-escape-sequences": "^6.1.1", + "@75lb/deep-merge": "^1.1.1", + "ansi-escape-sequences": "^6.2.0", "array-back": "^6.2.0", - "byte-size": "^8.0.0", + "byte-size": "^8.1.0", "command-line-args": "^5.2.0", "command-line-usage": "^6.1.1", "create-mixin": "^3.0.0", - "current-module-paths": "^1.0.0", - "koa": "^2.13.1", - "load-module": "^4.1.0", - "open": "^8.2.1", + "current-module-paths": "^1.1.0", + "koa": "^2.13.3", + "load-module": "^4.2.1", + "open": "^8.3.0", "qrcode-terminal": "^0.12.0", - "typical": "^7.0.0", - "walk-back": "^5.0.0" + "typical": "^7.1.1", + "walk-back": "^5.1.0" } }, "lws-basic-auth": { @@ -6703,12 +6702,12 @@ } }, "makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, "requires": { - "tmpl": "1.0.x" + "tmpl": "1.0.5" } }, "map-limit": { @@ -6853,6 +6852,12 @@ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, "moo-color": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/moo-color/-/moo-color-1.0.2.tgz", @@ -6950,9 +6955,9 @@ "dev": true }, "nanoid": { - "version": "3.1.29", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.29.tgz", - "integrity": "sha512-dW2pUSGZ8ZnCFIlBIA31SV8huOGCHb6OwzVCc7A69rb/a+SgPBwfmLvK5TKQ3INPbRkcI8a/Owo0XbiTNH19wg==", + "version": "3.1.30", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", + "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", "dev": true }, "natural-compare": { @@ -6986,9 +6991,9 @@ "dev": true }, "node-releases": { - "version": "1.1.77", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz", - "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "normalize-path": { @@ -7103,9 +7108,9 @@ "dev": true }, "open": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.3.0.tgz", - "integrity": "sha512-7INcPWb1UcOwSQxAXTnBJ+FxVV4MPs/X++FWWBtgY69/J5lc+tCteMt/oFK1MnkyHC4VILLa9ntmwKTwDR4Q9w==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", "dev": true, "requires": { "define-lazy-prop": "^2.0.0", @@ -7124,17 +7129,17 @@ } }, "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "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", + "word-wrap": "^1.2.3" } }, "p-finally": { @@ -7322,9 +7327,9 @@ "dev": true }, "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, "picomatch": { @@ -7333,6 +7338,12 @@ "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true }, + "pify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "dev": true + }, "pirates": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", @@ -7376,13 +7387,13 @@ "dev": true }, "postcss": { - "version": "8.3.9", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.9.tgz", - "integrity": "sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw==", + "version": "8.3.11", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.11.tgz", + "integrity": "sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA==", "dev": true, "requires": { - "nanoid": "^3.1.28", - "picocolors": "^0.2.1", + "nanoid": "^3.1.30", + "picocolors": "^1.0.0", "source-map-js": "^0.6.2" } }, @@ -7722,9 +7733,9 @@ "dev": true }, "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, "prettier": { @@ -7734,9 +7745,9 @@ "dev": true }, "pretty-format": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.5.tgz", - "integrity": "sha512-+nYn2z9GgicO9JiqmY25Xtq8SYfZ/5VCpEU3pppHHNAhd1y+ZXxmNPd1evmNcAd6Hz4iBV2kf0UpGth5A/VJ7g==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", + "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", "dev": true, "requires": { "@jest/types": "^27.2.5", @@ -8052,6 +8063,12 @@ } } }, + "resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true + }, "restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -8072,9 +8089,9 @@ } }, "rollup": { - "version": "2.58.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.58.0.tgz", - "integrity": "sha512-NOXpusKnaRpbS7ZVSzcEXqxcLDOagN6iFS8p45RkoiMqPHDLwJm758UF05KlMoCRbLBTZsPOIa887gZJ1AiXvw==", + "version": "2.58.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.58.3.tgz", + "integrity": "sha512-ei27MSw1KhRur4p87Q0/Va2NAYqMXOX++FNEumMBcdreIRLURKy+cE2wcDJKBn0nfmhP2ZGrJkP1XPO+G8FJQw==", "dev": true, "requires": { "fsevents": "~2.3.2" @@ -8141,12 +8158,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "pify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", - "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", - "dev": true - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -8205,6 +8216,14 @@ "dev": true, "requires": { "estree-walker": "^0.6.1" + }, + "dependencies": { + "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 + } } }, "rxjs": { @@ -8909,12 +8928,12 @@ "dev": true }, "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "requires": { - "prelude-ls": "~1.1.2" + "prelude-ls": "^1.2.1" } }, "type-detect": { @@ -8924,9 +8943,9 @@ "dev": true }, "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==", + "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 }, "type-is": { @@ -9111,12 +9130,12 @@ "dev": true }, "walker": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, "requires": { - "makeerror": "1.0.x" + "makeerror": "1.0.12" } }, "webidl-conversions": { diff --git a/package.json b/package.json index b6ce37e0..c1685323 100644 --- a/package.json +++ b/package.json @@ -47,19 +47,19 @@ "@babel/preset-env": "^7.15.8", "@rollup/plugin-json": "^4.1.0", "@types/jest": "^27.0.2", - "eslint": "^8.0.1", - "husky": "^7.0.2", + "eslint": "^8.1.0", + "husky": "^7.0.4", "jaguarjs-jsdoc": "^1.1.0", - "jest": "^27.2.5", + "jest": "^27.3.1", "jest-canvas-mock": "^2.3.1", "jest-webgl-canvas-mock": "^0.2.3", "jsdoc": "^3.6.7", - "lint-staged": "^11.2.3", + "lint-staged": "^11.2.6", "local-web-server": "^5.1.1", "msdf-bmfont-xml": "^2.5.4", - "postcss": "^8.3.9", + "postcss": "^8.3.11", "prettier": "^2.4.1", - "rollup": "^2.58.0", + "rollup": "^2.58.3", "rollup-plugin-postcss": "^4.0.1", "rollup-plugin-terser": "^7.0.2", "typescript": "^4.4.4" From 9eda4928bf12bd5b1fe30da4f48226681d26a589 Mon Sep 17 00:00:00 2001 From: Thibaut Lassalle Date: Sat, 30 Oct 2021 07:55:05 -0700 Subject: [PATCH 08/27] better types --- src/og/Extent.js | 18 ++-- src/og/Globe.js | 14 +-- src/og/Rectangle.js | 2 +- src/og/astro/earth.js | 2 +- src/og/bv/Box.js | 6 +- src/og/bv/Sphere.js | 8 +- src/og/camera/Camera.js | 80 +++++++------- src/og/camera/Frustum.js | 16 +-- src/og/camera/PlanetCamera.js | 36 +++---- src/og/control/Control.js | 4 +- src/og/control/EarthCoordinates.js | 2 +- src/og/control/Sun.js | 4 +- src/og/ellipsoid/Ellipsoid.js | 20 ++-- src/og/ellipsoid/wgs84.js | 2 +- src/og/entity/BaseBillboard.js | 38 +++---- src/og/entity/Billboard.js | 8 +- src/og/entity/Entity.js | 76 ++++++------- src/og/entity/EntityCollection.js | 46 ++++---- src/og/entity/Geometry.js | 4 +- src/og/entity/GeometryHandler.js | 2 +- src/og/entity/Label.js | 28 ++--- src/og/entity/PointCloud.js | 8 +- src/og/entity/PointCloudHandler.js | 6 +- src/og/entity/Polyline.js | 32 +++--- src/og/entity/Ray.js | 22 ++-- src/og/entity/Strip.js | 10 +- src/og/entity/StripHandler.js | 6 +- src/og/layer/BaseGeoImage.js | 6 +- src/og/layer/CanvasTiles.js | 14 +-- src/og/layer/GeoImage.js | 4 +- src/og/layer/GeoVideo.js | 4 +- src/og/layer/KML.js | 10 +- src/og/layer/Layer.js | 30 +++--- src/og/layer/Vector.js | 38 +++---- src/og/layer/XYZ.js | 12 +-- src/og/light/LightSource.js | 58 +++++----- src/og/math.js | 10 +- src/og/math/Mat3.js | 20 ++-- src/og/math/Mat4.js | 64 +++++------ src/og/math/Plane.js | 4 +- src/og/math/Quat.js | 122 ++++++++++----------- src/og/math/Ray.js | 42 ++++---- src/og/math/Vec2.js | 124 ++++++++++----------- src/og/math/Vec3.js | 168 ++++++++++++++--------------- src/og/math/Vec4.js | 38 +++---- src/og/math/coder.js | 6 +- src/og/proj/EPSG3857.js | 2 +- src/og/proj/EPSG4326.js | 2 +- src/og/proj/Proj.js | 4 +- src/og/quadTree/Node.js | 10 +- src/og/renderer/Renderer.js | 36 +++---- src/og/renderer/RendererEvents.js | 10 +- src/og/scene/BaseNode.js | 10 +- src/og/scene/Planet.js | 114 ++++++++++---------- src/og/scene/RenderNode.js | 24 ++--- src/og/segment/Segment.js | 44 ++++---- src/og/segment/SegmentLonLat.js | 6 +- src/og/shapes/BaseShape.js | 36 +++---- src/og/shapes/Icosphere.js | 6 +- src/og/shapes/Sphere.js | 6 +- src/og/terrain/EmptyTerrain.js | 4 +- src/og/terrain/GlobusTerrain.js | 16 +-- src/og/utils/TextureAtlas.js | 8 +- src/og/utils/shared.js | 28 ++--- src/og/webgl/Framebuffer.js | 6 +- src/og/webgl/Handler.js | 14 +-- src/og/webgl/Multisample.js | 6 +- src/og/webgl/Program.js | 2 +- src/og/webgl/ProgramController.js | 16 +-- 69 files changed, 846 insertions(+), 838 deletions(-) diff --git a/src/og/Extent.js b/src/og/Extent.js index d6ece4ee..f5824e6b 100644 --- a/src/og/Extent.js +++ b/src/og/Extent.js @@ -53,7 +53,7 @@ export class Extent { * Creates extent instance from values in array. * @static * @param {Array.} arr - South west and north east longitude and latidudes packed in array. (exactly 4 entries) - * @return {og.Extent} Extent object. + * @return {Extent} Extent object. */ static createFromArray(arr) { return new Extent(new LonLat(arr[0], arr[1]), new LonLat(arr[2], arr[3])); @@ -82,7 +82,7 @@ export class Extent { * Creates bound extent instance by coordinate array. * @static * @param {Array.>} arr - Coordinate array. (exactly 2 entries) - * @return {og.Extent} Extent object. + * @return {Extent} Extent object. */ static createByCoordinatesArr(arr) { let lonmin = math.MAX, lonmax = math.MIN, @@ -105,7 +105,7 @@ export class Extent { * @param {number} z - * @param {number} width - * @param {number} height - - * @returns {og.Extent} - + * @returns {Extent} - */ static fromTile(x, y, z, width, height) { width = width || mercator.POLE_DOUBLE; @@ -127,7 +127,7 @@ export class Extent { * Sets current bounding extent object by coordinate array. * @public * @param {Array.} arr - Coordinate array. - * @return {og.Extent} Current extent. + * @return {Extent} Current extent. */ setByCoordinates(arr) { let lonmin = math.MAX, lonmax = math.MIN, @@ -193,7 +193,7 @@ export class Extent { /** * Creates clone instance of the current extent. * @public - * @return {og.Extent} Extent clone. + * @return {Extent} Extent clone. */ clone() { return new Extent(this.southWest.clone(), this.northEast.clone()); @@ -261,7 +261,7 @@ export class Extent { /** * Returns extents are equals. - * @param {og.Extent} extent - Extent. + * @param {Extent} extent - Extent. * @returns {boolean} - */ equals(extent) { @@ -272,7 +272,7 @@ export class Extent { /** * Converts extent coordinates to mercator projection coordinates. * @public - * @return {og.Extent} New instance of the current extent. + * @return {Extent} New instance of the current extent. */ forwardMercator() { return new Extent(this.southWest.forwardMercator(), this.northEast.forwardMercator()); @@ -281,7 +281,7 @@ export class Extent { /** * Converts extent coordinates from mercator projection to degrees. * @public - * @return {og.Extent} New instance of the current extent. + * @return {Extent} New instance of the current extent. */ inverseMercator() { return new Extent(this.southWest.inverseMercator(), this.northEast.inverseMercator()); @@ -290,7 +290,7 @@ export class Extent { /** * Gets cartesian bounding bounds of the current ellipsoid. * @public - * @param {og.Ellipsoid} ellipsoid - Ellipsoid. + * @param {Ellipsoid} ellipsoid - Ellipsoid. * @return {Array.} Cartesian 3d coordinate array. (exactly 6 entries) */ getCartesianBounds(ellipsoid) { diff --git a/src/og/Globe.js b/src/og/Globe.js index 9a1fc934..ed764d52 100644 --- a/src/og/Globe.js +++ b/src/og/Globe.js @@ -50,12 +50,12 @@ const PLANET_NAME_PREFIX = "globus_planet_"; * * @param {object} options - Options: * @param {string} options.target - HTML element id where planet canvas have to be created. - * @param {og.scene.RenderNode} [options.skybox] - Render skybox. null - default. + * @param {scene.RenderNode} [options.skybox] - Render skybox. null - default. * @param {string} [options.name] - Planet name. Default is unic identifier. - * @param {og.terrain.Terrain} [options.terrain] - Terrain provider. Default no terrain - og.terrain.EmptyTerrain. - * @param {Array.} [options.controls] - Renderer controls array. - * @param {Array.} [options.layers] - Planet layers. - * @param {og.Extent} [options.viewExtent] - Viewable starting extent. + * @param {terrain.Terrain} [options.terrain] - Terrain provider. Default no terrain - og.terrain.EmptyTerrain. + * @param {Array.} [options.controls] - Renderer controls array. + * @param {Array.} [options.layers] - Planet layers. + * @param {Extent} [options.viewExtent] - Viewable starting extent. * @param {boolean} [options.autoActivate] - Globe rendering auto activation flag. True is default. * @param {DOMElement} [options.attributionContainer] - Container for attribution list. * @param {Number} [options.maxGridSize] = Maximal segment grid size. 128 is default @@ -108,7 +108,7 @@ class Globe { /** * Interface for the renderer context(events, input states, renderer nodes etc.) * @public - * @type {og.Renderer} + * @type {Renderer} */ this.renderer = new Renderer( new Handler(_canvasId, { @@ -148,7 +148,7 @@ class Globe { /** * Render node renders a planet. * @public - * @type {og.scene.Planet|og.scene.PlanetAtmosphere} + * @type {scene.Planet|og.scene.PlanetAtmosphere} */ // TODO: } else { diff --git a/src/og/Rectangle.js b/src/og/Rectangle.js index 794c6a47..37d6fabe 100644 --- a/src/og/Rectangle.js +++ b/src/og/Rectangle.js @@ -43,7 +43,7 @@ class Rectangle { /** * Clone rectangle object. * @public - * @returns {og.Rectangle} + * @returns {Rectangle} */ clone() { return new Rectangle(this.left, this.top, this.right, this.bottom); diff --git a/src/og/astro/earth.js b/src/og/astro/earth.js index cdfb973e..e6d36eeb 100644 --- a/src/og/astro/earth.js +++ b/src/og/astro/earth.js @@ -13,7 +13,7 @@ import { Vec3 } from '../math/Vec3.js'; /** * Returns Sun position in the geocentric coordinate system by the time. * @param {Number} jDate - Julian date time. - * @returns {og.Vec3} - Sun geocentric coordinates. + * @returns {Vec3} - Sun geocentric coordinates. */ export function getSunPosition(jDate) { // http://stjarnhimlen.se/comp/tutorial.html diff --git a/src/og/bv/Box.js b/src/og/bv/Box.js index 9b949d8c..10c63ec0 100644 --- a/src/og/bv/Box.js +++ b/src/og/bv/Box.js @@ -15,7 +15,7 @@ class Box { /** * Vertices array. * @public - * @type{Array.} + * @type{Array.} */ this.vertices = [ new Vec3(), @@ -65,8 +65,8 @@ class Box { /** * Sets bounding box coordiantes by ellipsoid geodetic extend. - * @param {og.Ellipsoid} ellipsoid - Ellipsoid. - * @param {og.Extent} extent - Geodetic extent. + * @param {Ellipsoid} ellipsoid - Ellipsoid. + * @param {Extent} extent - Geodetic extent. */ setFromExtent(ellipsoid, extent) { this.setFromBoundsArr(extent.getCartesianBounds(ellipsoid)); diff --git a/src/og/bv/Sphere.js b/src/og/bv/Sphere.js index 26c10974..1645c8f6 100644 --- a/src/og/bv/Sphere.js +++ b/src/og/bv/Sphere.js @@ -10,7 +10,7 @@ import { Vec3 } from '../math/Vec3.js'; * Bounding sphere class. * @class * @param {Number} [radius] - Bounding sphere radius. - * @param {og.Vec3} [center] - Bounding sphere coordiantes. + * @param {Vec3} [center] - Bounding sphere coordiantes. */ class Sphere { /** @@ -30,7 +30,7 @@ class Sphere { /** * Sphere coordiantes. * @public - * @type {og.Vec3} + * @type {Vec3} */ this.center = center ? center.clone() : new Vec3(); } @@ -47,8 +47,8 @@ class Sphere { /** * Sets bounding sphere coordiantes by ellipsoid geodetic extend. - * @param {og.Ellipsoid} ellipsoid - Ellipsoid. - * @param {og.Extent} extent - Geodetic extent. + * @param {Ellipsoid} ellipsoid - Ellipsoid. + * @param {Extent} extent - Geodetic extent. */ setFromExtent(ellipsoid, extent) { this.setFromBounds(extent.getCartesianBounds(ellipsoid)); diff --git a/src/og/camera/Camera.js b/src/og/camera/Camera.js index ea05408b..3780d89d 100644 --- a/src/og/camera/Camera.js +++ b/src/og/camera/Camera.js @@ -12,15 +12,15 @@ import { Mat4 } from "../math/Mat4.js"; /** * Camera class. * @class - * @param {og.Renderer} [renderer] - Renderer uses the camera instance. + * @param {Renderer} [renderer] - Renderer uses the camera instance. * @param {Object} [options] - Camera options: * @param {Object} [options.name] - Camera name. * @param {number} [options.viewAngle=38] - Camera angle of view. Default is 30.0 * @param {number} [options.near=1] - Camera near plane distance. Default is 1.0 * @param {number} [options.far=og.math.MAX] - Camera far plane distance. Deafult is og.math.MAX - * @param {og.Vec3} [options.eye=[0,0,0]] - Camera eye position. Default (0,0,0) - * @param {og.Vec3} [options.look=[0,0,0]] - Camera look position. Default (0,0,0) - * @param {og.Vec3} [options.up=[0,1,0]] - Camera eye position. Default (0,1,0) + * @param {Vec3} [options.eye=[0,0,0]] - Camera eye position. Default (0,0,0) + * @param {Vec3} [options.look=[0,0,0]] - Camera look position. Default (0,0,0) + * @param {Vec3} [options.up=[0,1,0]] - Camera eye position. Default (0,1,0) * * @fires og.Camera#viewchange */ @@ -29,35 +29,35 @@ class Camera { /** * Assigned renderer * @public - * @type {og.Renderer} + * @type {Renderer} */ this.renderer = renderer; /** * Camera events handler * @public - * @type {og.Events} + * @type {Events} */ this.events = new Events(EVENT_NAMES, this); /** * Camera position. * @public - * @type {og.Vec3} + * @type {Vec3} */ this.eye = new Vec3(); /** * Camera RTE high position * @public - * @type {og.Vec3} + * @type {Vec3} */ this.eyeHigh = new Float32Array(3); /** * Camera RTE low position * @public - * @type {og.Vec3} + * @type {Vec3} */ this.eyeLow = new Float32Array(3); @@ -78,35 +78,35 @@ class Camera { /** * Camera normal matrix. * @protected - * @type {og.Mat3} + * @type {Mat3} */ this._normalMatrix = new Mat3(); /** * Camera view matrix. * @protected - * @type {og.Mat4} + * @type {Mat4} */ this._viewMatrix = new Mat4(); /** * Camera right vector. * @protected - * @type {og.Vec3} + * @type {Vec3} */ this._u = new Vec3(0.0, 1.0, 0.0); // up x n /** * Camera up vector. * @protected - * @type {og.Vec3} + * @type {Vec3} */ this._v = new Vec3(1.0, 0.0, 0.0); // n x u - UP /** * Camera forward vector. * @protected - * @type {og.Vec3} + * @type {Vec3} */ this._n = new Vec3(0.0, 0.0, 1.0); // eye - look - FORWARD @@ -199,14 +199,14 @@ class Camera { /** * Camera initialization. * @public - * @param {og.Renderer} renderer - OpenGlobus renderer object. + * @param {Renderer} renderer - OpenGlobus renderer object. * @param {Object} [options] - Camera options: * @param {number} [options.viewAngle] - Camera angle of view. Default is 30.0 * @param {number} [options.near] - Camera near plane distance. Default is 1.0 * @param {number} [options.far] - Camera far plane distance. Deafult is og.math.MAX - * @param {og.Vec3} [options.eye] - Camera eye position. Default (0,0,0) - * @param {og.Vec3} [options.look] - Camera look position. Default (0,0,0) - * @param {og.Vec3} [options.up] - Camera eye position. Default (0,1,0) + * @param {Vec3} [options.eye] - Camera eye position. Default (0,0,0) + * @param {Vec3} [options.look] - Camera look position. Default (0,0,0) + * @param {Vec3} [options.up] - Camera eye position. Default (0,1,0) */ _init(options) { this._setProj(this._viewAngle, this._aspect); @@ -362,10 +362,10 @@ class Camera { /** * Sets camera to eye position * @public - * @param {og.Vec3} eye - Camera position - * @param {og.Vec3} look - Look point - * @param {og.Vec3} up - Camera up vector - * @returns {og.Camera} - This camera + * @param {Vec3} eye - Camera position + * @param {Vec3} look - Look point + * @param {Vec3} up - Camera up vector + * @returns {Camera} - This camera */ set(eye, look, up) { this.eye.x = eye.x; @@ -386,8 +386,8 @@ class Camera { /** * Sets camera look point * @public - * @param {og.Vec3} look - Look point - * @param {og.Vec3} [up] - Camera up vector otherwise camera current up vector(this._v) + * @param {Vec3} look - Look point + * @param {Vec3} [up] - Camera up vector otherwise camera current up vector(this._v) */ look(look, up) { this._n.set(this.eye.x - look.x, this.eye.y - look.y, this.eye.z - look.z); @@ -478,7 +478,7 @@ class Camera { * @public * @param {number} x - Scren X coordinate * @param {number} y - Scren Y coordinate - * @returns {og.Vec3} - Direction vector + * @returns {Vec3} - Direction vector */ unproject(x, y) { var c = this.renderer.handler.canvas, @@ -501,8 +501,8 @@ class Camera { /** * Gets projected 3d point to the 2d screen coordiantes * @public - * @param {og.Vec3} v - Cartesian 3d coordiantes - * @returns {og.Vec2} - Screen point coordinates + * @param {Vec3} v - Cartesian 3d coordiantes + * @returns {Vec2} - Screen point coordinates */ project(v) { var r = this.frustums[0]._projectionViewMatrix.mulVec4(v.toVec4()), @@ -516,8 +516,8 @@ class Camera { * @param {number} angle - Rotation angle in radians * @param {boolean} isArc - If true camera up vector gets from current up vector every frame, * otherwise up is always input parameter. - * @param {og.Vec3} center - Point that the camera rotates around - * @param {og.math.Vecto3} [up] - Camera up vector + * @param {Vec3} center - Point that the camera rotates around + * @param {math.Vecto3} [up] - Camera up vector */ rotateAround(angle, isArc, center, up) { center = center || Vec3.ZERO; @@ -541,8 +541,8 @@ class Camera { * @param {number} angle - Rotation angle in radians. * @param {boolaen} isArc - If true camera up vector gets from current up vector every frame, * otherwise up is always input parameter. - * @param {og.Vec3} center - Point that the camera rotates around. - * @param {og.Vec3} [up] - Camera up vector. + * @param {Vec3} center - Point that the camera rotates around. + * @param {Vec3} [up] - Camera up vector. */ rotateHorizontal(angle, isArc, center, up) { this.rotateAround(angle, isArc, center, up); @@ -551,7 +551,7 @@ class Camera { /** * Rotates camera around center point by vecrtical. * @param {number} angle - Rotation angle in radians. - * @param {og.Vec3} center - Point that the camera rotates around. + * @param {Vec3} center - Point that the camera rotates around. */ rotateVertical(angle, center) { this.rotateAround(angle, false, center, this._u); @@ -560,8 +560,8 @@ class Camera { /** * Gets 3d size factor. Uses in LOD distance calculation. * @public - * @param {og.Vec3} p - Far point. - * @param {og.Vec3} r - Far point. + * @param {Vec3} p - Far point. + * @param {Vec3} r - Far point. * @returns {number} - Size factor. */ projectedSize(p, r) { @@ -571,7 +571,7 @@ class Camera { /** * Returns normal matrix. * @public - * @returns {og.Mat3} - Normal matrix. + * @returns {Mat3} - Normal matrix. */ getNormalMatrix() { return this._normalMatrix._m; @@ -580,7 +580,7 @@ class Camera { /** * Returns model matrix. * @public - * @returns {og.Mat4} - View matrix. + * @returns {Mat4} - View matrix. */ getViewMatrix() { return this._viewMatrix._m; @@ -601,7 +601,7 @@ class Camera { /** * Returns projection matrix. * @public - * @returns {og.Mat4} - Projection matrix. + * @returns {Mat4} - Projection matrix. */ getProjectionMatrix() { return this.frustum._projectionMatrix._m; @@ -610,7 +610,7 @@ class Camera { /** * Returns projection and model matrix product. * @public - * @return {og.Mat4} - Projection-view matrix. + * @return {Mat4} - Projection-view matrix. */ getProjectionViewMatrix() { return this.frustum._projectionViewMatrix._m; @@ -619,7 +619,7 @@ class Camera { /** * Returns inverse projection and model matrix product. * @public - * @returns {og.Mat4} - Inversed projection-view matrix. + * @returns {Mat4} - Inversed projection-view matrix. */ getInverseProjectionViewMatrix() { return this.frustum._inverseProjectionViewMatrix._m; @@ -628,7 +628,7 @@ class Camera { /** * Returns inverse projection matrix. * @public - * @returns {og.Mat4} - Inversed projection-view matrix. + * @returns {Mat4} - Inversed projection-view matrix. */ getInverseProjectionMatrix() { return this.frustum._inverseProjectionMatrix._m; diff --git a/src/og/camera/Frustum.js b/src/og/camera/Frustum.js index f57007ac..b4b70edb 100644 --- a/src/og/camera/Frustum.js +++ b/src/og/camera/Frustum.js @@ -29,28 +29,28 @@ class Frustum { /** * Camera projection matrix. * @protected - * @type {og.Mat4} + * @type {Mat4} */ this._projectionMatrix = new Mat4(); /** * Camera inverse projection matrix. * @protected - * @type {og.Mat4} + * @type {Mat4} */ this._inverseProjectionMatrix = new Mat4(); /** * Product of projection and view matrices. * @protected - * @type {og.Mat4} + * @type {Mat4} */ this._projectionViewMatrix = new Mat4(); /** * Inverse projectionView Matrix. * @protected - * @type {og.Mat4} + * @type {Mat4} */ this._inverseProjectionViewMatrix = new Mat4(); @@ -210,7 +210,7 @@ class Frustum { /** * Returns true if a point in the frustum. * @public - * @param {og.Vec3} point - Cartesian point. + * @param {Vec3} point - Cartesian point. * @returns {boolean} - */ containsPoint(point) { @@ -227,7 +227,7 @@ class Frustum { /** * Returns true if the frustum contains a bonding sphere, but bottom plane exclude. * @public - * @param {og.bv.Sphere} sphere - Bounding sphere. + * @param {bv.Sphere} sphere - Bounding sphere. * @returns {boolean} - */ containsSphereBottomExc(sphere) { @@ -251,7 +251,7 @@ class Frustum { /** * Returns true if the frustum contains a bonding sphere. * @public - * @param {og.bv.Sphere} sphere - Bounding sphere. + * @param {bv.Sphere} sphere - Bounding sphere. * @returns {boolean} - */ containsSphere(sphere) { @@ -287,7 +287,7 @@ class Frustum { /** * Returns true if the frustum contains a bounding box. * @public - * @param {og.bv.Box} box - Bounding box. + * @param {bv.Box} box - Bounding box. * @returns {boolean} - */ containsBox(box) { diff --git a/src/og/camera/PlanetCamera.js b/src/og/camera/PlanetCamera.js index af37e808..7f4dc803 100644 --- a/src/og/camera/PlanetCamera.js +++ b/src/og/camera/PlanetCamera.js @@ -18,7 +18,7 @@ import { Mat4 } from "../math/Mat4.js"; * Planet camera. * @class * @extends {Camera} - * @param {og.RenderNode} planet - Planet render node. + * @param {RenderNode} planet - Planet render node. * @param {Object} [options] - Planet camera options: * @param {Object} [options.name] - Camera name. * @param {number} [options.viewAngle=37] - Camera angle of view. Default is 35.0 @@ -26,9 +26,9 @@ import { Mat4 } from "../math/Mat4.js"; * @param {number} [options.far] - Camera far plane distance. Deafult is og.math.MAX * @param {number} [options.minAltitude] - Minimal altitude for the camera. Deafult is 1 * @param {number} [options.maxAltitude] - Maximal altitude for the camera. Deafult is 20000000 - * @param {og.Vec3} [options.eye] - Camera eye position. Default (0,0,0) - * @param {og.Vec3} [options.look] - Camera look position. Default (0,0,0) - * @param {og.Vec3} [options.up] - Camera eye position. Default (0,1,0) + * @param {Vec3} [options.eye] - Camera eye position. Default (0,0,0) + * @param {Vec3} [options.look] - Camera look position. Default (0,0,0) + * @param {Vec3} [options.up] - Camera eye position. Default (0,1,0) */ class PlanetCamera extends Camera { constructor(planet, options) { @@ -50,7 +50,7 @@ class PlanetCamera extends Camera { /** * Assigned camera's planet. * @public - * @type {og.scene.Planet} + * @type {scene.Planet} */ this.planet = planet; @@ -92,14 +92,14 @@ class PlanetCamera extends Camera { /** * Cartesian coordinates on the terrain. * @protected - * @type {og.Vec3} + * @type {Vec3} */ this._terrainPoint = new Vec3(); /** * Quad node that camera flies over. * @protected - * @type {og.quadTree.Node} + * @type {quadTree.Node} */ this._insideSegment = null; @@ -178,7 +178,7 @@ class PlanetCamera extends Camera { * @public * @param {LonLat} lonlat - New camera and camera view position. * @param {LonLat} [lookLonLat] - Look up coordinates. - * @param {og.Vec3} [up] - Camera UP vector. Default (0,1,0) + * @param {Vec3} [up] - Camera UP vector. Default (0,1,0) */ setLonLat(lonlat, lookLonLat, up) { this.stopFlying(); @@ -211,9 +211,9 @@ class PlanetCamera extends Camera { /** * Gets position by viewable extent. * @public - * @param {og.Extent} extent - Viewable extent. + * @param {Extent} extent - Viewable extent. * @param {Number} height - Camera height - * @returns {og.Vec3} + * @returns {Vec3} */ getExtentPosition(extent, height) { var north = extent.getNorth(); @@ -281,7 +281,7 @@ class PlanetCamera extends Camera { /** * View current extent. * @public - * @param {og.Extent} extent - Current extent. + * @param {Extent} extent - Current extent. */ viewExtent(extent, height) { this.stopFlying(); @@ -292,8 +292,8 @@ class PlanetCamera extends Camera { /** * Flies to the current extent. * @public - * @param {og.Extent} extent - Current extent. - * @param {og.Vec3} [up] - Camera UP in the end of flying. Default - (0,1,0) + * @param {Extent} extent - Current extent. + * @param {Vec3} [up] - Camera UP in the end of flying. Default - (0,1,0) * @param {Number} [ampl] - Altitude amplitude factor. * @param {cameraCallback} [completeCallback] - Callback that calls after flying when flying is finished. * @param {cameraCallback} [startCallback] - Callback that calls befor the flying begins. @@ -356,9 +356,9 @@ class PlanetCamera extends Camera { /** * Flies to the cartesian coordinates. * @public - * @param {og.Vec3} cartesian - Finish cartesian coordinates. - * @param {og.Vec3} [look] - Camera LOOK in the end of flying. Default - (0,0,0) - * @param {og.Vec3} [up] - Camera UP vector in the end of flying. Default - (0,1,0) + * @param {Vec3} cartesian - Finish cartesian coordinates. + * @param {Vec3} [look] - Camera LOOK in the end of flying. Default - (0,0,0) + * @param {Vec3} [up] - Camera UP vector in the end of flying. Default - (0,1,0) * @param {Number} [ampl=1.0] - Altitude amplitude factor. * @param {cameraCallback} [completeCallback] - Callback that calls after flying when flying is finished. * @param {cameraCallback} [startCallback] - Callback that calls befor the flying begins. @@ -453,8 +453,8 @@ class PlanetCamera extends Camera { * Flies to the geo coordiantes. * @public * @param {LonLat} lonlat - Finish coordinates. - * @param {og.Vec3} [look] - Camera LOOK in the end of flying. Default - (0,0,0) - * @param {og.Vec3} [up] - Camera UP vector in the end of flying. Default - (0,1,0) + * @param {Vec3} [look] - Camera LOOK in the end of flying. Default - (0,0,0) + * @param {Vec3} [up] - Camera UP vector in the end of flying. Default - (0,1,0) * @param {Number} [ampl] - Altitude amplitude factor. * @param {cameraCallback} [completeCallback] - Callback that calls after flying when flying is finished. * @param {cameraCallback} [startCallback] - Callback that calls befor the flying begins. diff --git a/src/og/control/Control.js b/src/og/control/Control.js index e856929c..9059fdac 100644 --- a/src/og/control/Control.js +++ b/src/og/control/Control.js @@ -29,7 +29,7 @@ class Control { /** * Assigned renderer. * @public - * @type {og.Renderer} + * @type {Renderer} */ this.renderer = null; @@ -106,7 +106,7 @@ class Control { /** * Assign renderer to the control. * @public - * @type {og.Renderer} + * @type {Renderer} */ addTo(renderer) { if (renderer) { diff --git a/src/og/control/EarthCoordinates.js b/src/og/control/EarthCoordinates.js index a0628d49..400feffd 100644 --- a/src/og/control/EarthCoordinates.js +++ b/src/og/control/EarthCoordinates.js @@ -96,7 +96,7 @@ class EarthCoordinates extends Control { /** * Current position. * @public - * @type {og.Vec3} + * @type {Vec3} */ this.position = null; } diff --git a/src/og/control/Sun.js b/src/og/control/Sun.js index 913be1a4..72ff1ce8 100644 --- a/src/og/control/Sun.js +++ b/src/og/control/Sun.js @@ -28,7 +28,7 @@ class Sun extends Control { /** * Earth planet node. * @public - * @type {og.scene.Planet} + * @type {scene.Planet} */ this.planet = null; @@ -46,7 +46,7 @@ class Sun extends Control { /** * Light source. * @public - * @type {og.LightSource} + * @type {LightSource} */ this.sunlight = null; diff --git a/src/og/ellipsoid/Ellipsoid.js b/src/og/ellipsoid/Ellipsoid.js index 3599764c..dbc847ae 100644 --- a/src/og/ellipsoid/Ellipsoid.js +++ b/src/og/ellipsoid/Ellipsoid.js @@ -226,7 +226,7 @@ class Ellipsoid { * Gets cartesian ECEF from Wgs84 geodetic coordiantes. * @public * @param {LonLat} lonlat - Degrees geodetic coordiantes. - * @returns {og.Vec3} - + * @returns {Vec3} - */ lonLatToCartesian(lonlat) { var latrad = math.RADIANS * lonlat.lat, @@ -247,8 +247,8 @@ class Ellipsoid { * Gets cartesian ECEF from Wgs84 geodetic coordiantes. * @public * @param {LonLat} lonlat - Degrees geodetic coordiantes. - * @param {og.Vec3} res - Output result. - * @returns {og.Vec3} - + * @param {Vec3} res - Output result. + * @returns {Vec3} - */ lonLatToCartesianRes(lonlat, res) { var latrad = math.RADIANS * lonlat.lat, @@ -272,7 +272,7 @@ class Ellipsoid { * @param {Number} lon - Longitude. * @param {Number} lat - Latitude. * @param {Number} height - Height. - * @returns {og.Vec3} - + * @returns {Vec3} - */ geodeticToCartesian(lon, lat, height = 0) { var latrad = math.RADIANS * lat, @@ -292,7 +292,7 @@ class Ellipsoid { /** * Gets Wgs84 geodetic coordiantes from cartesian ECEF. * @public - * @param {og.Vec3} cartesian - Cartesian coordinates. + * @param {Vec3} cartesian - Cartesian coordinates. * @returns {LonLat} - */ cartesianToLonLat(cartesian) { @@ -321,8 +321,8 @@ class Ellipsoid { /** * Gets ellipsoid surface normal. * @public - * @param {og.Vec3} coord - Spatial coordiantes. - * @returns {og.Vec3} - + * @param {Vec3} coord - Spatial coordiantes. + * @returns {Vec3} - */ getSurfaceNormal3v(coord) { var r2 = this._invRadii2; @@ -403,9 +403,9 @@ class Ellipsoid { * Returns ray vector hit ellipsoid coordinates. * If the ray doesn't hit ellipsoid returns null. * @public - * @param {og.Vec3} origin - Ray origin point. - * @param {og.Vec3} direction - Ray direction. - * @returns {og.Vec3} - + * @param {Vec3} origin - Ray origin point. + * @param {Vec3} direction - Ray direction. + * @returns {Vec3} - */ hitRay(origin, direction) { diff --git a/src/og/ellipsoid/wgs84.js b/src/og/ellipsoid/wgs84.js index 058ba8eb..d98ef449 100644 --- a/src/og/ellipsoid/wgs84.js +++ b/src/og/ellipsoid/wgs84.js @@ -8,6 +8,6 @@ import { Ellipsoid } from './Ellipsoid.js'; /** * WGS84 ellipsoid object. - * @type {og.Ellipsoid} + * @type {Ellipsoid} */ export const wgs84 = new Ellipsoid(6378137.000, 6356752.3142); \ No newline at end of file diff --git a/src/og/entity/BaseBillboard.js b/src/og/entity/BaseBillboard.js index cddd3925..516560c2 100644 --- a/src/og/entity/BaseBillboard.js +++ b/src/og/entity/BaseBillboard.js @@ -11,11 +11,11 @@ import { Vec3 } from '../math/Vec3.js'; * Base prototype for billboard and label classes. * @class * @param {Object} [options] - Options: - * @param {og.Vec3|Array.} [options.position] - Billboard spatial position. + * @param {Vec3|Array.} [options.position] - Billboard spatial position. * @param {number} [options.rotation] - Screen angle rotaion. - * @param {og.Vec4|string|Array.} [options.color] - Billboard color. - * @param {og.Vec3|Array.} [options.alignedAxis] - Billboard aligned vector. - * @param {og.Vec3|Array.} [options.offset] - Billboard center screen offset. + * @param {Vec4|string|Array.} [options.color] - Billboard color. + * @param {Vec3|Array.} [options.alignedAxis] - Billboard aligned vector. + * @param {Vec3|Array.} [options.offset] - Billboard center screen offset. * @param {boolean} [options.visibility] - Visibility. */ class BaseBillboard { @@ -33,7 +33,7 @@ class BaseBillboard { /** * Billboard center cartesian position. * @protected - * @type {og.Vec3} + * @type {Vec3} */ this._position = utils.createVector3(options.position); @@ -53,21 +53,21 @@ class BaseBillboard { /** * RGBA color. * @protected - * @type {og.Vec4} + * @type {Vec4} */ this._color = utils.createColorRGBA(options.color); /** * Cartesian aligned axis vector. * @protected - * @type {og.Vec3} + * @type {Vec3} */ this._alignedAxis = utils.createVector3(options.alignedAxis); /** * Billboard center screen space offset. Where x,y - screen space offset and z - depth offset. * @protected - * @type {og.math.Vecto3} + * @type {math.Vecto3} */ this._offset = utils.createVector3(options.offset); @@ -81,14 +81,14 @@ class BaseBillboard { /** * Entity instance that holds this billboard. * @protected - * @type {og.Entity} + * @type {Entity} */ this._entity = null; /** * Handler that stores and renders this billboard object. * @protected - * @type {og.BillboardHandler} + * @type {BillboardHandler} */ this._handler = null; @@ -129,7 +129,7 @@ class BaseBillboard { /** * Sets billboard position. * @public - * @param {og.Vec3} position - Cartesian coordinates. + * @param {Vec3} position - Cartesian coordinates. */ setPosition3v(position) { this._position.x = position.x; @@ -142,7 +142,7 @@ class BaseBillboard { /** * Returns billboard position. * @public - * @returns {og.Vec3} + * @returns {Vec3} */ getPosition() { return this._position; @@ -165,7 +165,7 @@ class BaseBillboard { /** * Sets screen space offset. * @public - * @param {og.Vec2} offset - Offset size. + * @param {Vec2} offset - Offset size. */ setOffset3v(offset) { this._offset.x = offset.x; @@ -177,7 +177,7 @@ class BaseBillboard { /** * Returns billboard screen space offset size. * @public - * @returns {og.Vec3} + * @returns {Vec3} */ getOffset() { return this._offset; @@ -231,7 +231,7 @@ class BaseBillboard { /** * Sets RGBA color. Each channel from 0.0 to 1.0. * @public - * @param {og.Vec4} color - RGBA vector. + * @param {Vec4} color - RGBA vector. */ setColor4v(color) { this._color.x = color.x; @@ -253,7 +253,7 @@ class BaseBillboard { /** * Returns RGBA color. * @public - * @returns {og.Vec4} + * @returns {Vec4} */ getColor() { return this._color; @@ -295,7 +295,7 @@ class BaseBillboard { /** * Sets billboard aligned vector. * @public - * @param {og.math.Vecto3} alignedAxis - Vector to align. + * @param {math.Vecto3} alignedAxis - Vector to align. */ setAlignedAxis3v(alignedAxis) { this._alignedAxis.x = alignedAxis.x; @@ -307,7 +307,7 @@ class BaseBillboard { /** * Returns aligned vector. * @public - * @returns {og.Vec3} + * @returns {Vec3} */ getAlignedAxis() { return this._alignedAxis; @@ -325,7 +325,7 @@ class BaseBillboard { /** * Sets billboard picking color. * @public - * @param {og.Vec3} color - Picking color. + * @param {Vec3} color - Picking color. */ setPickingColor3v(color) { this._handler && this._handler.setPickingColorArr(this._handlerIndex, color); diff --git a/src/og/entity/Billboard.js b/src/og/entity/Billboard.js index 4ba79685..8b7042b5 100644 --- a/src/og/entity/Billboard.js +++ b/src/og/entity/Billboard.js @@ -11,11 +11,11 @@ import { BaseBillboard } from './BaseBillboard.js'; * @class * @extends {BaseBillboard} * @param {Object} [options] - Options: - * @param {og.Vec3|Array.} [options.position] - Billboard spatial position. + * @param {Vec3|Array.} [options.position] - Billboard spatial position. * @param {number} [options.rotation] - Screen angle rotaion. - * @param {og.Vec4|string|Array.} [options.color] - Billboard color. - * @param {og.Vec3|Array.} [options.alignedAxis] - Billboard aligned vector. - * @param {og.Vec3|Array.} [options.offset] - Billboard center screen offset. + * @param {Vec4|string|Array.} [options.color] - Billboard color. + * @param {Vec3|Array.} [options.alignedAxis] - Billboard aligned vector. + * @param {Vec3|Array.} [options.offset] - Billboard center screen offset. * @param {boolean} [options.visibility] - Visibility. * @param {string} [options.src] - Billboard image url source. * @param {Image} [options.image] - Billboard image object. diff --git a/src/og/entity/Entity.js b/src/og/entity/Entity.js index 355dfd89..315f7d7c 100644 --- a/src/og/entity/Entity.js +++ b/src/og/entity/Entity.js @@ -25,7 +25,7 @@ import { Vec3 } from '../math/Vec3.js'; * @class * @param {Object} [options] - Entity options: * @param {string} [options.name] - A human readable name to display to users. It does not have to be unique. - * @param {og.Vec3|Array.} [options.cartesian] - Spatial entities like billboard, label, sphere etc. cartesian position. + * @param {Vec3|Array.} [options.cartesian] - Spatial entities like billboard, label, sphere etc. cartesian position. * @param {LonLat} [options.lonlat] - Geodetic coordiantes for an entities like billboard, label, sphere etc. * @param {boolean} [options.aground] - True for entities that have to be placed on the relief. * @param {boolean} [options.visibility] - Entity visibility. @@ -70,21 +70,21 @@ class Entity { /** * Children entities. * @public - * @type {Array.} + * @type {Array.} */ this.childrenNodes = []; /** * Parent entity. * @public - * @type {og.Entity} + * @type {Entity} */ this.parent = null; /** * Entity cartesian position. * @protected - * @type {og.Vec3} + * @type {Vec3} */ this._cartesian = utils.createVector3(options.cartesian); @@ -119,7 +119,7 @@ class Entity { /** * Entity collection that this entity belongs to. * @protected - * @type {og.EntityCollection} + * @type {EntityCollection} */ this._entityCollection = null; @@ -133,7 +133,7 @@ class Entity { /** * Assigned vector layer pointer. * @protected - * @type {og.layer.Vector} + * @type {layer.Vector} */ this._layer = null; @@ -147,7 +147,7 @@ class Entity { /** * Picking color. * @protected - * @type {og.Vec3} + * @type {Vec3} */ this._pickingColor = new Vec3(0, 0, 0); @@ -166,56 +166,56 @@ class Entity { /** * Billboard entity. * @public - * @type {og.Billboard} + * @type {Billboard} */ this.billboard = this._createOptionFeature('billboard', options.billboard); /** * Text label entity. * @public - * @type {og.Label} + * @type {Label} */ this.label = this._createOptionFeature('label', options.label); /** * Shape entity. * @public - * @type {og.shape.BaseShape} + * @type {shape.BaseShape} */ this.shape = this._createOptionFeature('sphere', options.sphere || options.box); /** * Polyline entity. * @public - * @type {og.Polyline} + * @type {Polyline} */ this.polyline = this._createOptionFeature('polyline', options.polyline); /** * Ray entity. * @public - * @type {og.ray} + * @type {ray} */ this.ray = this._createOptionFeature('ray', options.ray); /** * PointCloud entity. * @public - * @type {og.PointCloud} + * @type {PointCloud} */ this.pointCloud = this._createOptionFeature('pointCloud', options.pointCloud); /** * Geometry entity(available for vector layer only). * @public - * @type {og.Geometry} + * @type {Geometry} */ this.geometry = this._createOptionFeature('geometry', options.geometry); /** * Strip entity. * @public - * @type {og.Strip} + * @type {Strip} */ this.strip = this._createOptionFeature('strip', options.strip); } @@ -250,9 +250,9 @@ class Entity { /** * Adds current entity into the specified entity collection. * @public - * @param {og.EntityCollection|og.layer.Vector} collection - Specified entity collection or vector layer. + * @param {EntityCollection|og.layer.Vector} collection - Specified entity collection or vector layer. * @param {Boolean} [rightNow=false] - Entity insertion option for vector layer. - * @returns {og.Entity} - This object. + * @returns {Entity} - This object. */ addTo(collection, rightNow) { collection.add(this, rightNow); @@ -311,7 +311,7 @@ class Entity { /** * Sets entity cartesian position. * @public - * @param {og.Vec3} cartesian - Cartesian position in 3d space. + * @param {Vec3} cartesian - Cartesian position in 3d space. */ setCartesian3v(cartesian) { this.setCartesian(cartesian.x, cartesian.y, cartesian.z); @@ -364,7 +364,7 @@ class Entity { /** * Sets entity cartesian position without event dispatching. * @protected - * @param {og.Vec3} cartesian - Cartesian position in 3d space. + * @param {Vec3} cartesian - Cartesian position in 3d space. * @param {boolean} skipLonLat - skip geodetic calculation. */ _setCartesian3vSilent(cartesian, skipLonLat) { @@ -458,7 +458,7 @@ class Entity { /** * Returns carteain position. * @public - * @returns {og.Vec3} - + * @returns {Vec3} - */ getCartesian() { return this._cartesian.clone(); @@ -467,8 +467,8 @@ class Entity { /** * Sets entity billboard. * @public - * @param {og.Billboard} billboard - Billboard object. - * @returns {og.Billboard} - + * @param {Billboard} billboard - Billboard object. + * @returns {Billboard} - */ setBillboard(billboard) { if (this.billboard) { @@ -485,8 +485,8 @@ class Entity { /** * Sets entity label. * @public - * @param {og.Label} label - Text label. - * @returns {og.Label} - + * @param {Label} label - Text label. + * @returns {Label} - */ setLabel(label) { if (this.label) { @@ -503,8 +503,8 @@ class Entity { /** * Sets entity ray. * @public - * @param {og.Ray} ray - Ray object. - * @returns {og.Ray} - + * @param {Ray} ray - Ray object. + * @returns {Ray} - */ setRay(ray) { if (this.ray) { @@ -520,8 +520,8 @@ class Entity { /** * Sets entity shape. * @public - * @param {og.BaseShape} shape - Shape object. - * @returns {og.Polyline} - + * @param {BaseShape} shape - Shape object. + * @returns {Polyline} - */ setShape(shape) { if (this.shape) { @@ -538,8 +538,8 @@ class Entity { /** * Sets entity polyline. * @public - * @param {og.Polyline} polyline - Polyline object. - * @returns {og.Polyline} - + * @param {Polyline} polyline - Polyline object. + * @returns {Polyline} - */ setPolyline(polyline) { if (this.polyline) { @@ -555,8 +555,8 @@ class Entity { /** * Sets entity pointCloud. * @public - * @param {og.PointCloud} pointCloud - PointCloud object. - * @returns {og.PointCloud} - + * @param {PointCloud} pointCloud - PointCloud object. + * @returns {PointCloud} - */ setPointCloud(pointCloud) { if (this.pointCloud) { @@ -572,8 +572,8 @@ class Entity { /** * Sets entity geometry. * @public - * @param {og.Geometry} geometry - Geometry object. - * @returns {og.Geometry} - + * @param {Geometry} geometry - Geometry object. + * @returns {Geometry} - */ setGeometry(geometry) { if (this.geometry) { @@ -589,8 +589,8 @@ class Entity { /** * Sets entity strip. * @public - * @param {og.Strip} strip - Strip object. - * @returns {og.Strip} - + * @param {Strip} strip - Strip object. + * @returns {Strip} - */ setStrip(strip) { if (this.strip) { @@ -618,7 +618,7 @@ class Entity { /** * Append child entity. * @public - * @param {og.Entity} entity - Child entity. + * @param {Entity} entity - Child entity. */ appendChild(entity) { entity._entityCollection = this._entityCollection; @@ -661,7 +661,7 @@ class Entity { /** * Return geodethic extent. - * @returns {og.Extent} - + * @returns {Extent} - */ getExtent() { var res; diff --git a/src/og/entity/EntityCollection.js b/src/og/entity/EntityCollection.js index 70f6885b..58fed161 100644 --- a/src/og/entity/EntityCollection.js +++ b/src/og/entity/EntityCollection.js @@ -19,7 +19,7 @@ import { ShapeHandler } from './ShapeHandler.js'; * Entity collection provide handlers for an each type of entity like billboard, label or 3ds object. * @constructor * @param {Object} [options] - Entity options: - * @param {Array.} [options.entities] - Entities array. + * @param {Array.} [options.entities] - Entities array. * @param {boolean} [options.visibility=true] - Entity visibility. * @param {Array.} [options.scaleByDistance] - Entity scale by distance parameters. (exactly 3 entries) * First index - near distance to the entity, after entity becomes full scale. @@ -85,7 +85,7 @@ class EntityCollection { /** * Render node context. * @public - * @type {og.scene.RenderNode} + * @type {scene.RenderNode} */ this.renderNode = null; @@ -113,49 +113,49 @@ class EntityCollection { /** * Billboards handler * @public - * @type {og.BillboardHandler} + * @type {BillboardHandler} */ this.billboardHandler = new BillboardHandler(this); /** * Labels handler * @public - * @type {og.LabelHandler} + * @type {LabelHandler} */ this.labelHandler = new LabelHandler(this, options.labelMaxLetters); /** * Shape handler * @public - * @type {og.ShapeHandler} + * @type {ShapeHandler} */ this.shapeHandler = new ShapeHandler(this); /** * Polyline handler * @public - * @type {og.PolylineHandler} + * @type {PolylineHandler} */ this.polylineHandler = new PolylineHandler(this); /** * Ray handler * @public - * @type {og.RayHandler} + * @type {RayHandler} */ this.rayHandler = new RayHandler(this); /** * PointCloud handler * @public - * @type {og.PointCloudHandler} + * @type {PointCloudHandler} */ this.pointCloudHandler = new PointCloudHandler(this); /** * Strip handler * @public - * @type {og.StripHandler} + * @type {StripHandler} */ this.stripHandler = new StripHandler(this); @@ -166,7 +166,7 @@ class EntityCollection { /** * Entities array. * @protected - * @type {Array.} + * @type {Array.} */ this._entities = []; @@ -198,7 +198,7 @@ class EntityCollection { /** * Entity collection events handler. * @public - * @type {og.Events} + * @type {Events} */ this.events = new Events(EVENT_NAMES, this); @@ -328,8 +328,8 @@ class EntityCollection { /** * Adds entity to the collection and returns collection. * @public - * @param {og.Entity} entity - Entity. - * @returns {og.EntityCollection} - + * @param {Entity} entity - Entity. + * @returns {EntityCollection} - */ add(entity) { if (!entity._entityCollection) { @@ -352,8 +352,8 @@ class EntityCollection { /** * Adds entities array to the collection and returns collection. * @public - * @param {Array.} entities - Entities array. - * @returns {og.EntityCollection} - + * @param {Array.} entities - Entities array. + * @returns {EntityCollection} - */ addEntities(entities) { for (let i = 0, len = entities.length; i < len; i++) { @@ -365,7 +365,7 @@ class EntityCollection { /** * Returns true if the entity belongs this collection, otherwise returns false. * @public - * @param {og.Entity} entity - Entity. + * @param {Entity} entity - Entity. * @returns {boolean} - */ belongs(entity) { @@ -405,7 +405,7 @@ class EntityCollection { /** * Removes entity from this collection. * @public - * @param {og.Entity} entity - Entity to remove. + * @param {Entity} entity - Entity to remove. */ removeEntity(entity) { this._entities.splice(entity._entityCollectionIndex, 1); @@ -468,9 +468,9 @@ class EntityCollection { /** * Adds this collection to render node. * @public - * @param {og.scene.RenderNode} renderNode - Render node. + * @param {scene.RenderNode} renderNode - Render node. * @param {boolean} [isHidden] - Uses in vector layers that render in planet render specific function. - * @returns {og.EntityCollection} - + * @returns {EntityCollection} - */ addTo(renderNode, isHidden) { if (!this.renderNode) { @@ -490,7 +490,7 @@ class EntityCollection { /** * This function is called in the RenderNode assign function. - * @param {og.RenderNode} renderNode + * @param {RenderNode} renderNode */ bindRenderNode(renderNode) { @@ -514,7 +514,7 @@ class EntityCollection { /** * Updates coordiantes all lonLat entities in collection after collecction attached to the planet node. * @private - * @param {og.Ellipsoid} ellipsoid - Globe ellipsoid. + * @param {Ellipsoid} ellipsoid - Globe ellipsoid. */ _updateGeodeticCoordinates(ellipsoid) { var e = this._entities; @@ -571,7 +571,7 @@ class EntityCollection { /** * Gets entity array. * @public - * @returns {Array.} - + * @returns {Array.} - */ getEntities() { return [].concat(this._entities); @@ -622,7 +622,7 @@ class EntityCollection { /** * Clears entity recursevely. * @private - * @param {og.Entity} entity - Entity to clear. + * @param {Entity} entity - Entity to clear. */ _clearEntity(entity) { entity._entityCollection = null; diff --git a/src/og/entity/Geometry.js b/src/og/entity/Geometry.js index 94ef8c48..a3037726 100644 --- a/src/og/entity/Geometry.js +++ b/src/og/entity/Geometry.js @@ -27,7 +27,7 @@ class Geometry { /** * Entity instance that holds this geometry. * @protected - * @type {og.Entity} + * @type {Entity} */ this._entity = null; @@ -96,7 +96,7 @@ class Geometry { @static @param {Object} geometryObj - GeoJSON style geometry feature. @param {LonLat[]} outCoordinates - Geometry feature coordinates clone. - @returns {og.Extent} - + @returns {Extent} - */ static getExtent(geometryObj, outCoordinates) { var res = new Extent(new LonLat(180.0, 90.0), new LonLat(-180.0, -90.0)); diff --git a/src/og/entity/GeometryHandler.js b/src/og/entity/GeometryHandler.js index 8e79cb02..ceeee329 100644 --- a/src/og/entity/GeometryHandler.js +++ b/src/og/entity/GeometryHandler.js @@ -253,7 +253,7 @@ class GeometryHandler { /** * @public - * @param {og.Geometry} geometry - Geometry object. + * @param {Geometry} geometry - Geometry object. */ add(geometry) { // diff --git a/src/og/entity/Label.js b/src/og/entity/Label.js index 62d95cb2..8327eb77 100644 --- a/src/og/entity/Label.js +++ b/src/og/entity/Label.js @@ -30,11 +30,11 @@ const STR2ALIGN = { * @class * @extends {BaseBillboard} * @param {Object} [options] - Label options: - * @param {og.Vec3|Array.} [options.position] - Billboard spatial position. + * @param {Vec3|Array.} [options.position] - Billboard spatial position. * @param {number} [options.rotation] - Screen angle rotaion. - * @param {og.Vec4|string|Array.} [options.color] - Billboard color. - * @param {og.Vec3|Array.} [options.alignedAxis] - Billboard aligned vector. - * @param {og.Vec3|Array.} [options.offset] - Billboard center screen offset. + * @param {Vec4|string|Array.} [options.color] - Billboard color. + * @param {Vec3|Array.} [options.alignedAxis] - Billboard aligned vector. + * @param {Vec3|Array.} [options.offset] - Billboard center screen offset. * @param {boolean} [options.visibility] - Visibility. * @param {string} [options.text] - Text string. * @param {string} [options.face] - HTML5 font face. @@ -42,8 +42,8 @@ const STR2ALIGN = { * @param {string} [options.style] - HTML5 font style. Example 'normal', 'italic'. * @param {string} [options.weight] - HTML5 font weight. Example 'normal', 'bold'. * @param {number} [options.outline] - Text outline size. 0 - no outline, 1 - maximum outline. Default 0.58. - * @param {og.Vec4|string|Array.} [options.outlineColor] - Outline color. - * @param {og.Label.ALIGN} [options.align] - Text horizontal align: "left", "right" and "center". + * @param {Vec4|string|Array.} [options.outlineColor] - Outline color. + * @param {Label.ALIGN} [options.align] - Text horizontal align: "left", "right" and "center". */ class Label extends BaseBillboard { constructor(options) { @@ -82,14 +82,14 @@ class Label extends BaseBillboard { /** * Label outline color. * @private - * @type {og.Vec4} + * @type {Vec4} */ this._outlineColor = utils.createColorRGBA(options.outlineColor, new Vec4(0.0, 0.0, 0.0, 1.0)); /** * Text horizontal align: "left", "right" and "center". * @private - * @type {og.Label.ALIGN} + * @type {Label.ALIGN} */ this._align = options.align ? STR2ALIGN[options.align.trim().toLowerCase()] || ALIGN.RIGHT : ALIGN.RIGHT; @@ -103,7 +103,7 @@ class Label extends BaseBillboard { /** * Font atlas pointer. * @private - * @type {og.utils.FontAtlas} + * @type {utils.FontAtlas} */ this._fontAtlas = null; } @@ -131,7 +131,7 @@ class Label extends BaseBillboard { /** * Sets label text align. Could be center, left or right. Left is default. * @public - * @param {og.Label.ALIGN} align - Text align. + * @param {Label.ALIGN} align - Text align. */ setAlign(align) { this._align = STR2ALIGN[align.trim().toLowerCase()]; @@ -141,7 +141,7 @@ class Label extends BaseBillboard { /** * Gets label text current alignment. * @public - * @returns {og.Label.ALIGN} + * @returns {Label.ALIGN} */ getAlign() { return this._align; @@ -235,7 +235,7 @@ class Label extends BaseBillboard { /** * Sets text outline color. * @public - * @param {og.Vec4} rgba - Color vector. + * @param {Vec4} rgba - Color vector. */ setOutlineColor4v(rgba) { this._outlineColor.x = rgba.x; @@ -257,7 +257,7 @@ class Label extends BaseBillboard { /** * Gets outline color vector. * @public - * @returns {og.Vec4} + * @returns {Vec4} */ getOutlineColor() { return this._outlineColor; @@ -304,7 +304,7 @@ class Label extends BaseBillboard { /** * Assigns font atlas and update. * @public - * @param {og.utils.FontAtlas} fontAtlas - Font atlas. + * @param {utils.FontAtlas} fontAtlas - Font atlas. */ assignFontAtlas(fontAtlas) { !this._fontAtlas && (this._fontAtlas = fontAtlas); diff --git a/src/og/entity/PointCloud.js b/src/og/entity/PointCloud.js index c9b1556f..295f9d5d 100644 --- a/src/og/entity/PointCloud.js +++ b/src/og/entity/PointCloud.js @@ -68,14 +68,14 @@ class PointCloud { /** * Parent collection render node. * @private - * @type {og.scene.RenderNode} + * @type {scene.RenderNode} */ this._renderNode = null; /** * Entity instance that holds this point cloud. * @private - * @type {og.Entity} + * @type {Entity} */ this._entity = null; @@ -114,7 +114,7 @@ class PointCloud { /** * Handler that stores and renders this object. * @private - * @type {og.PointCloudHandler} + * @type {PointCloudHandler} */ this._handler = null; this._handlerIndex = -1; @@ -189,7 +189,7 @@ class PointCloud { /** * Assign rendering scene node. * @public - * @param {og.scene.RenderNode} renderNode - Assigned render node. + * @param {scene.RenderNode} renderNode - Assigned render node. */ setRenderNode(renderNode) { this._renderNode = renderNode; diff --git a/src/og/entity/PointCloudHandler.js b/src/og/entity/PointCloudHandler.js index 1431ef68..8fa87b65 100644 --- a/src/og/entity/PointCloudHandler.js +++ b/src/og/entity/PointCloudHandler.js @@ -19,21 +19,21 @@ class PointCloudHandler { /** * Parent collection * @private - * @type {og.EntityCollection} + * @type {EntityCollection} */ this._entityCollection = entityCollection; /** * Renderer * @private - * @type {og.Renderer} + * @type {Renderer} */ this._renderer = null; /** * Point cloud array * @private - * @type {Array.} + * @type {Array.} */ this._pointClouds = []; diff --git a/src/og/entity/Polyline.js b/src/og/entity/Polyline.js index dd2355ae..452f76a2 100644 --- a/src/og/entity/Polyline.js +++ b/src/og/entity/Polyline.js @@ -32,7 +32,7 @@ const A = 3; * @param {Object} [options] - Polyline options: * @param {number} [options.thickness] - Thickness in screen pixels 1.5 is default. * @param {Number} [options.altitude] - Relative to ground layers altitude value. - * @param {og.Vec4} [options.color] - RGBA color. + * @param {Vec4} [options.color] - RGBA color. * @param {Boolean} [options.opacity] - Line opacity. * @param {Boolean} [options.visibility] - Polyline visibility. True default. * @param {Boolean} [options.isClosed] - Closed geometry type identificator. @@ -88,7 +88,7 @@ class Polyline { /** * Polyline cartesian coordinates. * @private - * @type {Array.} + * @type {Array.} */ this._path3v = []; @@ -113,7 +113,7 @@ class Polyline { /** * Polyline geodetic extent. * @protected - * @type {og.Extent} + * @type {Extent} */ this._extent = new Extent(); @@ -136,14 +136,14 @@ class Polyline { /** * Entity instance that holds this Polyline. * @private - * @type {og.Entity} + * @type {Entity} */ this._entity = null; /** * Handler that stores and renders this Polyline object. * @private - * @type {og.PolylineHandler} + * @type {PolylineHandler} */ this._handler = null; this._handlerIndex = -1; @@ -183,11 +183,11 @@ class Polyline { * @param {Number[]} outVertices - Out vertices data array. * @param {Number[]} outOrders - Out vertices orders data array. * @param {Number[]} outIndexes - Out vertices indexes data array. - * @param {og.Ellipsoid} [ellipsoid] - Ellipsoid to coordinates transformation. + * @param {Ellipsoid} [ellipsoid] - Ellipsoid to coordinates transformation. * @param {Array.>} [outTransformedPathLonLat] - Geodetic coordinates out array. * @param {Array.>} [outPath3v] - Cartesian coordinates out array. * @param {Array.>} [outTransformedPathMerc] - Mercator coordinates out array. - * @param {og.Extent} [outExtent] - Geodetic line extent. + * @param {Extent} [outExtent] - Geodetic line extent. * @param {Array} [outColors] * @static */ @@ -454,11 +454,11 @@ class Polyline { * @param {Number[]} outVertices - Out vertices data array. * @param {Number[]} outOrders - Out vertices orders data array. * @param {Number[]} outIndexes - Out vertices indexes data array. - * @param {og.Ellipsoid} [ellipsoid] - Ellipsoid to coordinates transformation. + * @param {Ellipsoid} [ellipsoid] - Ellipsoid to coordinates transformation. * @param {Array.>} [outTransformedPathLonLat] - Geodetic coordinates out array. * @param {Array.>} [outPath3v] - Cartesian coordinates out array. * @param {Array.>} [outTransformedPathMerc] - Mercator coordinates out array. - * @param {og.Extent} [outExtent] - Geodetic line extent. + * @param {Extent} [outExtent] - Geodetic line extent. * @static */ static appendPoint3v( @@ -706,11 +706,11 @@ class Polyline { * @param {Number[]} outVertices - Out vertices data array. * @param {Number[]} outOrders - Out vertices orders data array. * @param {Number[]} outIndexes - Out indexes data array. - * @param {og.Ellipsoid} ellipsoid - Ellipsoid to coordinates transformation. + * @param {Ellipsoid} ellipsoid - Ellipsoid to coordinates transformation. * @param {Array.>} outTransformedPathCartesian - Cartesian coordinates out array. [[0,0,0], [1,1,1],...] * @param {Array.>} outPathLonLat - Geographic coordinates out array. * @param {Array.>} outTransformedPathMerc - Mercator coordinates out array. - * @param {og.Extent} outExtent - Geodetic line extent. + * @param {Extent} outExtent - Geodetic line extent. * @static */ static appendLineDataLonLat( @@ -1579,7 +1579,7 @@ class Polyline { /** * Adds a new cartesian point in the end of the path in a last line segment. * @public - * @param {og.Vec3} point3v - New coordinate. + * @param {Vec3} point3v - New coordinate. */ appendPoint3v(point3v, color, skipEllipsoid) { if (this._path3v.length === 0) { @@ -1623,7 +1623,7 @@ class Polyline { /** * Adds a new cartesian point in the end of the path. * @public - * @param {og.Vec3} point3v - New coordinate. + * @param {Vec3} point3v - New coordinate. * @param {number} [multiLineIndex=0] - Path part index, first by default. */ addPoint3v(point3v, multiLineIndex = 0) { @@ -1752,7 +1752,7 @@ class Polyline { /** * Assign with render node. * @public - * @param {og.scene.RenderNode} renderNode - + * @param {scene.RenderNode} renderNode - */ setRenderNode(renderNode) { if (renderNode) { @@ -1870,7 +1870,7 @@ class Polyline { /** * Returns polyline geodetic extent. * @public - * @returns {og.Extent} - Geodetic extent + * @returns {Extent} - Geodetic extent */ getExtent() { return this._extent.clone(); @@ -1878,7 +1878,7 @@ class Polyline { /** * Returns path cartesian coordinates. - * @return {Array.} Polyline path. + * @return {Array.} Polyline path. */ getPath3v() { return this._path3v; diff --git a/src/og/entity/Ray.js b/src/og/entity/Ray.js index e953602d..eaf1bdb5 100644 --- a/src/og/entity/Ray.js +++ b/src/og/entity/Ray.js @@ -13,10 +13,10 @@ import { doubleToTwoFloats2 } from '../math/coder.js'; * Ray class. * @class * @param {Object} [options] - Options: - * @param {og.Vec3|Array.} [options.startPosition] - Ray start point position. - * @param {og.Vec3|Array.} [options.endPosition] - Ray end point position. - * @param {og.Vec3|Array.} [options.startColor] - Ray start point color. - * @param {og.Vec3|Array.} [options.endColor] - Ray end point color. + * @param {Vec3|Array.} [options.startPosition] - Ray start point position. + * @param {Vec3|Array.} [options.endPosition] - Ray end point position. + * @param {Vec3|Array.} [options.startColor] - Ray start point color. + * @param {Vec3|Array.} [options.endColor] - Ray end point color. * @param {boolean} [options.visibility] - Visibility. */ class Ray { @@ -65,14 +65,14 @@ class Ray { /** * Entity instance that holds this billboard. * @protected - * @type {og.Entity} + * @type {Entity} */ this._entity = null; /** * Handler that stores and renders this billboard object. * @protected - * @type {og.BillboardHandler} + * @type {BillboardHandler} */ this._handler = null; @@ -102,7 +102,7 @@ class Ray { /** * Sets ray start position. * @public - * @param {og.Vec3} position - Cartesian coordinates. + * @param {Vec3} position - Cartesian coordinates. */ setStartPosition3v(position) { this._startPosition.x = position.x; @@ -130,7 +130,7 @@ class Ray { /** * Sets ray end position. * @public - * @param {og.Vec3} position - Cartesian coordinates. + * @param {Vec3} position - Cartesian coordinates. */ setEndPosition3v(position) { this._endPosition.x = position.x; @@ -184,7 +184,7 @@ class Ray { /** * Returns ray start position. * @public - * @returns {og.Vec3} + * @returns {Vec3} */ getStartPosition() { return this._startPosition; @@ -193,7 +193,7 @@ class Ray { /** * Returns ray end position. * @public - * @returns {og.Vec3} + * @returns {Vec3} */ getEndPosition() { return this._endPosition; @@ -230,7 +230,7 @@ class Ray { /** * Sets billboard picking color. * @public - * @param {og.Vec3} color - Picking color. + * @param {Vec3} color - Picking color. */ setPickingColor3v(color) { this._handler && this._handler.setPickingColorArr(this._handlerIndex, color); diff --git a/src/og/entity/Strip.js b/src/og/entity/Strip.js index 5f3078d4..348bfff3 100644 --- a/src/og/entity/Strip.js +++ b/src/og/entity/Strip.js @@ -57,14 +57,14 @@ class Strip { /** * Parent collection render node. * @private - * @type {og.scene.RenderNode} + * @type {scene.RenderNode} */ this._renderNode = null; /** * Entity instance that holds this strip. * @private - * @type {og.Entity} + * @type {Entity} */ this._entity = null; @@ -87,7 +87,7 @@ class Strip { /** * Handler that stores and renders this object. * @private - * @type {og.StripHandler} + * @type {StripHandler} */ this._handler = null; this._handlerIndex = -1; @@ -111,7 +111,7 @@ class Strip { /** * Assign picking color. * @protected - * @param {og.Vec3} color - Picking RGB color. + * @param {Vec3} color - Picking RGB color. */ setPickingColor3v(color) { this._pickingColor[0] = color.x / 255.0; @@ -177,7 +177,7 @@ class Strip { /** * Assign rendering scene node. * @public - * @param {og.scene.RenderNode} renderNode - Assigned render node. + * @param {scene.RenderNode} renderNode - Assigned render node. */ setRenderNode(renderNode) { this._renderNode = renderNode; diff --git a/src/og/entity/StripHandler.js b/src/og/entity/StripHandler.js index 3f950c57..2f728698 100644 --- a/src/og/entity/StripHandler.js +++ b/src/og/entity/StripHandler.js @@ -15,21 +15,21 @@ class StripHandler { /** * Parent collection * @private - * @type {og.EntityCollection} + * @type {EntityCollection} */ this._entityCollection = entityCollection; /** * Renderer * @private - * @type {og.Renderer} + * @type {Renderer} */ this._renderer = null; /** * Point cloud array * @private - * @type {Array.} + * @type {Array.} */ this._strips = []; diff --git a/src/og/layer/BaseGeoImage.js b/src/og/layer/BaseGeoImage.js index b23510f9..d01d1f31 100644 --- a/src/og/layer/BaseGeoImage.js +++ b/src/og/layer/BaseGeoImage.js @@ -154,7 +154,7 @@ class BaseGeoImage extends Layer { /** * @virtual - * @param {og.planetSegment.Material} material - GeoImage material. + * @param {planetSegment.Material} material - GeoImage material. */ abortMaterialLoading(material) { this._creationProceeding = false; @@ -215,7 +215,7 @@ class BaseGeoImage extends Layer { /** * @virtual * @protected - * @param {og.planetSegment.Material} material - GeoImage material. + * @param {planetSegment.Material} material - GeoImage material. */ clearMaterial(material) { material.image = null; @@ -227,7 +227,7 @@ class BaseGeoImage extends Layer { /** * @virtual * @protected - * @param {og.planetSegment.Material} material - GeoImage material. + * @param {planetSegment.Material} material - GeoImage material. * @returns {Array } - */ applyMaterial(material) { diff --git a/src/og/layer/CanvasTiles.js b/src/og/layer/CanvasTiles.js index 25b13451..a761cc79 100644 --- a/src/og/layer/CanvasTiles.js +++ b/src/og/layer/CanvasTiles.js @@ -41,7 +41,7 @@ const EVENT_NAMES = [ * @param {string} [options.attribution] - Layer attribution that displayed in the attribution area on the screen. * @param {boolean} [options.isBaseLayer=false] - Base layer flag. * @param {boolean} [options.visibility=true] - Layer visibility. - * @param {og.layer.CanvasTiles~drawTileCallback} [options.drawTile] - Draw tile callback. + * @param {layer.CanvasTiles~drawTileCallback} [options.drawTile] - Draw tile callback. * @fires og.layer.CanvasTiles#load * @fires og.layer.CanvasTiles#loadend */ @@ -63,13 +63,13 @@ class CanvasTiles extends Layer { /** * Tile pending queue that waiting for create. * @protected - * @type {Array.} + * @type {Array.} */ this._pendingsQueue = []; // new og.QueueArray(); /** * Draw tile callback. - * @type {og.layer.CanvasTiles~drawTileCallback} + * @type {layer.CanvasTiles~drawTileCallback} * @public */ this.drawTile = options.drawTile || null; @@ -116,7 +116,7 @@ class CanvasTiles extends Layer { * Start to load tile material. * @public * @virtual - * @param {og.planetSegment.Material} material - + * @param {planetSegment.Material} material - */ loadMaterial(material) { var seg = material.segment; @@ -143,7 +143,7 @@ class CanvasTiles extends Layer { /** * Loads material image and apply it to the planet segment. * @protected - * @param {og.planetSegment.Material} material - Loads material image. + * @param {planetSegment.Material} material - Loads material image. */ _exec(material) { CanvasTiles.__requestsCounter++; @@ -153,7 +153,7 @@ class CanvasTiles extends Layer { /** * Tile custom draw function. * @callback og.layer.CanvasTiles~drawTileCallback - * @param {og.planetSegment.Material} material + * @param {planetSegment.Material} material * @param {applyCanvasCallback} applyCanvasCallback */ var e = that.events.load; @@ -186,7 +186,7 @@ class CanvasTiles extends Layer { /** * Abort exact material loading. * @public - * @param {og.planetSegment.Material} material - Segment material. + * @param {planetSegment.Material} material - Segment material. */ abortMaterialLoading(material) { if (material.isLoading && material.image) { diff --git a/src/og/layer/GeoImage.js b/src/og/layer/GeoImage.js index 1f49d126..acce8db1 100644 --- a/src/og/layer/GeoImage.js +++ b/src/og/layer/GeoImage.js @@ -84,7 +84,7 @@ class GeoImage extends BaseGeoImage { * Loads planet segment material. In this case - GeoImage source image. * @virtual * @public - * @param {og.planetSegment.Material} material - GeoImage planet material. + * @param {planetSegment.Material} material - GeoImage planet material. */ loadMaterial(material) { material.isLoading = true; @@ -114,7 +114,7 @@ class GeoImage extends BaseGeoImage { /** * @virtual - * @param {og.planetSegment.Material} material - GeoImage material. + * @param {planetSegment.Material} material - GeoImage material. */ abortMaterialLoading(material) { this._image && (this._image.src = ''); diff --git a/src/og/layer/GeoVideo.js b/src/og/layer/GeoVideo.js index 5bcdae93..4e1ff819 100644 --- a/src/og/layer/GeoVideo.js +++ b/src/og/layer/GeoVideo.js @@ -139,7 +139,7 @@ class GeoVideo extends BaseGeoImage { * Loads planet segment material. In this case - GeoImage source video. * @virtual * @public - * @param {og.planetSegment.Material} material - GeoImage planet material. + * @param {planetSegment.Material} material - GeoImage planet material. */ loadMaterial(material) { material.isLoading = true; @@ -177,7 +177,7 @@ class GeoVideo extends BaseGeoImage { /** * @virtual - * @param {og.planetSegment.Material} material - GeoImage material. + * @param {planetSegment.Material} material - GeoImage material. */ abortMaterialLoading(material) { this._video && (this._video.src = ""); diff --git a/src/og/layer/KML.js b/src/og/layer/KML.js index 18cf7f00..d8408a89 100644 --- a/src/og/layer/KML.js +++ b/src/og/layer/KML.js @@ -24,6 +24,9 @@ export class KML extends Vector { super(name, options); this._extent = null; this._billboard = options.billboard || { src: 'https://openglobus.org/examples/billboards/carrot.png' }; + /** + * @type {string} + */ this._color = options.color || '#6689db'; } @@ -45,7 +48,7 @@ export class KML extends Vector { * @private * @param {Array} coordonates * @param {string} color - * @returns {Array} + * @returns {Array} */ _convertCoordonatesIntoEntities(coordinates, color, billboard) { const extent = new Extent(new LonLat(180.0, 90.0), new LonLat(-180.0, -90.0)); @@ -78,6 +81,7 @@ export class KML extends Vector { /** * @private + * @returns {Document} */ _getXmlContent(file) { return new Promise(resolve => { @@ -102,7 +106,7 @@ export class KML extends Vector { /** * @public * @param {File[]} kmls - * @returns {Promise} + * @returns {Promise<{entities: Entity[], extent: Extent}>} */ async addKmlFromFiles(kmls) { const kmlObjs = await Promise.all(kmls.map(this._getXmlContent)); @@ -145,7 +149,7 @@ export class KML extends Vector { /** * @public * @param {string} url - Url of the KML to display. './myFile.kml' or 'http://mySite/myFile.kml' for example. - * @returns {Promise} + * @returns {Promise<{entities: Entity[], extent: Extent}>} */ async addKmlFromUrl(url) { const kml = await this._getKmlFromUrl(url); diff --git a/src/og/layer/Layer.js b/src/og/layer/Layer.js index 15ff8395..41d85d28 100644 --- a/src/og/layer/Layer.js +++ b/src/og/layer/Layer.js @@ -28,10 +28,10 @@ export const FADING_FACTOR = 0.29; * @param {string} [options.attribution] - Layer attribution that displayed in the attribution area on the screen. * @param {boolean} [options.isBaseLayer=false] - This is a base layer. * @param {boolean} [options.visibility=true] - Layer visibility. - * @param {og.Extent} [options.extent=[[-180.0, -90.0], [180.0, 90.0]]] - Visible extent. - * @param {og.Vec3} [options.ambient=[0.1, 0.1, 0.21]] - Ambient RGB color. - * @param {og.Vec3} [options.diffuse=[1.0, 1.0, 1.0]] - Diffuse RGB color. - * @param {og.Vec3} [options.specular=[0.00025, 0.00015, 0.0001]] - Specular RGB color. + * @param {Extent} [options.extent=[[-180.0, -90.0], [180.0, 90.0]]] - Visible extent. + * @param {Vec3} [options.ambient=[0.1, 0.1, 0.21]] - Ambient RGB color. + * @param {Vec3} [options.diffuse=[1.0, 1.0, 1.0]] - Diffuse RGB color. + * @param {Vec3} [options.specular=[0.00025, 0.00015, 0.0001]] - Specular RGB color. * @param {Number} [options.shininess=100] - Shininess. * * @fires og.Layer#visibilitychange @@ -118,7 +118,7 @@ class Layer { /** * Planet node. * @protected - * @type {og.scene.Planet} + * @type {scene.Planet} */ this._planet = null; @@ -179,14 +179,14 @@ class Layer { /** * Visible degrees extent. * @protected - * @type {og.Extent} + * @type {Extent} */ this._extent = null; /** * Visible mercator extent. * @protected - * @type {og.Extent} + * @type {Extent} */ this._extentMerc = null; @@ -201,7 +201,7 @@ class Layer { /** * Layer picking color. Assign when added to the planet. * @protected - * @type {og.Vec3} + * @type {Vec3} */ this._pickingColor = new Vec3(); @@ -210,7 +210,7 @@ class Layer { /** * Events handler. * @public - * @type {og.Events} + * @type {Events} */ this.events = new Events(EVENT_NAMES, this); } @@ -310,7 +310,7 @@ class Layer { /** * Compares layers instances. * @public - * @param {og.Layer} layer - Layer instance to compare. + * @param {Layer} layer - Layer instance to compare. * @returns {boolean} - Returns true if the layers is the same instance of the input. */ isEqual(layer) { @@ -321,7 +321,7 @@ class Layer { * Assign the planet. * @protected * @virtual - * @param {og.scene.Planet} planet - Planet render node. + * @param {scene.Planet} planet - Planet render node. */ _assignPlanet(planet) { planet.layers.push(this); @@ -348,7 +348,7 @@ class Layer { /** * Adds layer to the planet. * @public - * @param {og.scene.Planet} planet - Adds layer to the planet. + * @param {scene.Planet} planet - Adds layer to the planet. */ addTo(planet) { if (!this._planet) { @@ -360,7 +360,7 @@ class Layer { /** * Removes from planet. * @public - * @returns {og.Layer} -This layer. + * @returns {Layer} -This layer. */ remove() { var p = this._planet; @@ -514,7 +514,7 @@ class Layer { /** * Sets visible geographical extent. * @public - * @param {og.Extent} extent - Layer visible geographical extent. + * @param {Extent} extent - Layer visible geographical extent. */ setExtent(extent) { var sw = extent.southWest.clone(), @@ -533,7 +533,7 @@ class Layer { /** * Gets layer extent. * @public - * @return {og.Extent} - Layer geodetic extent. + * @return {Extent} - Layer geodetic extent. */ getExtent() { return this._extent; diff --git a/src/og/layer/Vector.js b/src/og/layer/Vector.js index 69312f1a..aac7df84 100644 --- a/src/og/layer/Vector.js +++ b/src/og/layer/Vector.js @@ -47,7 +47,7 @@ function _entitiesConstructor(entities) { * @param {string} [options.zIndex=0] - Layer Z-order index. 0 is default. * @param {boolean} [options.visibility=true] - Layer visibility. True is default. * @param {boolean} [options.isBaseLayer=false] - Layer base layer. False is default. - * @param {Array.} [options.entities] - Entities array. + * @param {Array.} [options.entities] - Entities array. * @param {Array.} [options.scaleByDistance] - Scale by distance parameters. (exactly 3 entries) * First index - near distance to the entity, after entity becomes full scale. * Second index - far distance to the entity, when entity becomes zero scale. @@ -183,8 +183,8 @@ class Vector extends Layer { /** * Adds layer to the planet. * @public - * @param {og.Planet} planet - Planet scene object. - * @returns {og.layer.Vector} - + * @param {Planet} planet - Planet scene object. + * @returns {layer.Vector} - */ addTo(planet) { if (!this._planet) { @@ -200,7 +200,7 @@ class Vector extends Layer { /** * Returns stored entities. * @public - * @returns {Array.} - + * @returns {Array.} - */ getEntities() { return [].concat(this._entities); @@ -237,9 +237,9 @@ class Vector extends Layer { /** * Adds entity to the layer. * @public - * @param {og.Entity} entity - Entity. + * @param {Entity} entity - Entity. * @param {boolean} [rightNow] - Entity insertion option. False is deafult. - * @returns {og.layer.Vector} - Returns this layer. + * @returns {layer.Vector} - Returns this layer. */ add(entity, rightNow) { if (!(entity._layer || entity._entityCollection)) { @@ -255,10 +255,10 @@ class Vector extends Layer { /** * Adds entity to the layer in the index position. * @public - * @param {og.Entity} entity - Entity. + * @param {Entity} entity - Entity. * @param {Number} index - Index position. * @param {boolean} [rightNow] - Entity insertion option. False is deafult. - * @returns {og.layer.Vector} - Returns this layer. + * @returns {layer.Vector} - Returns this layer. */ insert(entity, index, rightNow) { if (!(entity._layer || entity._entityCollection)) { @@ -334,9 +334,9 @@ class Vector extends Layer { /** * Adds entity array to the layer. * @public - * @param {Array.} entities - Entities array. + * @param {Array.} entities - Entities array. * @param {boolean} [rightNow] - Entity insertion option. False is deafult. - * @returns {og.layer.Vector} - Returns this layer. + * @returns {layer.Vector} - Returns this layer. */ addEntities(entities, rightNow) { var i = entities.length; @@ -350,8 +350,8 @@ class Vector extends Layer { * Remove entity from layer. * TODO: memory leaks. * @public - * @param {og.Entity} entity - Entity to remove. - * @returns {og.layer.Vector} - Returns this layer. + * @param {Entity} entity - Entity to remove. + * @returns {layer.Vector} - Returns this layer. */ removeEntity(entity) { if (entity._layer && this.isEqual(entity._layer)) { @@ -447,8 +447,8 @@ class Vector extends Layer { /** * Removes entities from layer. * @public - * @param {Array.} entities - Entity array. - * @returns {og.layer.Vector} - Returns this layer. + * @param {Array.} entities - Entity array. + * @returns {layer.Vector} - Returns this layer. */ removeEntities(entities) { var i = entities.length; @@ -464,7 +464,7 @@ class Vector extends Layer { * @param {number} near - Full scale entity distance. * @param {number} far - Zerol scale entity distance. * @param {number} [farInvisible] - Entity visibility distance. - * @returns {og.layer.Vector} - + * @returns {layer.Vector} - */ setScaleByDistance(near, far, farInvisible) { this.scaleByDistance[0] = near; @@ -517,8 +517,8 @@ class Vector extends Layer { /** * Removes current entities from layer and adds new entities. * @public - * @param {Array.} entities - New entity array. - * @returns {og.layer.Vector} - Returns layer instance. + * @param {Array.} entities - New entity array. + * @returns {layer.Vector} - Returns layer instance. */ setEntities(entities) { @@ -823,7 +823,7 @@ class Vector extends Layer { * Start to load tile material. * @public * @virtual - * @param {og.Segment.Material} material - Current material. + * @param {Segment.Material} material - Current material. */ loadMaterial(material) { @@ -845,7 +845,7 @@ class Vector extends Layer { /** * Abort exact material loading. * @public - * @param {og.planetSegment.Material} material - Segment material. + * @param {planetSegment.Material} material - Segment material. */ abortMaterialLoading(material) { material.isLoading = false; diff --git a/src/og/layer/XYZ.js b/src/og/layer/XYZ.js index fda98f4d..9e74384a 100644 --- a/src/og/layer/XYZ.js +++ b/src/og/layer/XYZ.js @@ -28,7 +28,7 @@ import { RENDERING } from '../quadTree/quadTree.js'; * @param {boolean} [options.visibility=true] - Layer visibility. * @param {string} [options.crossOrigin=true] - If true, all tiles will have their crossOrigin attribute set to ''. * @param {string} options.url - Tile url source template(see example below). - * @param {og.layer.XYZ~_urlRewriteCallback} options.urlRewrite - Url rewrite function. + * @param {layer.XYZ~_urlRewriteCallback} options.urlRewrite - Url rewrite function. * @fires og.layer.XYZ#load * @fires og.layer.XYZ#loadend * @@ -88,7 +88,7 @@ class XYZ extends Layer { * Rewrites imagery tile url query. * @private * @callback og.layer.XYZ~_urlRewriteCallback - * @param {og.planetSegment.Segment} segment - Segment to load. + * @param {planetSegment.Segment} segment - Segment to load. * @param {string} url - Created url. * @returns {string} - Url query string. */ @@ -143,7 +143,7 @@ class XYZ extends Layer { * Start to load tile material. * @public * @virtual - * @param {og.planetSegment.Material} material - Loads current material. + * @param {planetSegment.Material} material - Loads current material. */ loadMaterial(material, forceLoading) { @@ -197,7 +197,7 @@ class XYZ extends Layer { * Creates query url. * @protected * @virtual - * @param {og.planetSegment.Segment} segment - Creates specific url for current segment. + * @param {planetSegment.Segment} segment - Creates specific url for current segment. * @returns {String} - Returns url string. */ _createUrl(segment) { @@ -216,7 +216,7 @@ class XYZ extends Layer { /** * Returns actual url query string. * @protected - * @param {og.planetSegment.Segment} segment - Segment that loads image data. + * @param {planetSegment.Segment} segment - Segment that loads image data. * @returns {string} - Url string. */ _getHTTPRequestString(segment) { @@ -226,7 +226,7 @@ class XYZ extends Layer { /** * Sets url rewrite callback, used for custom url rewriting for every tile laoding. * @public - * @param {og.layer.XYZ~_urlRewriteCallback} ur - The callback that returns tile custom created url. + * @param {layer.XYZ~_urlRewriteCallback} ur - The callback that returns tile custom created url. */ setUrlRewriteCallback(ur) { this._urlRewriteCallback = ur; diff --git a/src/og/light/LightSource.js b/src/og/light/LightSource.js index 9a83905d..6b434533 100644 --- a/src/og/light/LightSource.js +++ b/src/og/light/LightSource.js @@ -11,10 +11,10 @@ import { Vec3 } from '../math/Vec3.js'; * @class * @param {string} [name] - Light source name. * @param {Object} [params] - Light parameters: - * @param {og.Vec3} [params.position] - Light source position if it is a point light, otherwise it is a light direction vector. - * @param {og.Vec3} [params.ambient] - Ambient RGB color. - * @param {og.Vec3} [params.diffuse] - Diffuse RGB color. - * @param {og.Vec3} [params.specular] - Specular RGB color. + * @param {Vec3} [params.position] - Light source position if it is a point light, otherwise it is a light direction vector. + * @param {Vec3} [params.ambient] - Ambient RGB color. + * @param {Vec3} [params.diffuse] - Diffuse RGB color. + * @param {Vec3} [params.specular] - Specular RGB color. * @param {number} [params.shininess] - Specular shininess. */ class LightSource { @@ -42,14 +42,14 @@ class LightSource { /** * Render node where light is shines. * @protected - * @type {og.scene.RenderNode} + * @type {scene.RenderNode} */ this._renderNode = null; /** * Light position. * @protected - * @type {og.Vec3} + * @type {Vec3} */ this._position = params.position || new Vec3(); @@ -63,21 +63,21 @@ class LightSource { /** * Ambient color. * @protected - * @type {og.Vec3} + * @type {Vec3} */ this._ambient = params.ambient || new Vec3(); /** * Diffuse color. * @protected - * @type {og.Vec3} + * @type {Vec3} */ this._diffuse = params.diffuse || new Vec3(0.8, 0.8, 0.8); /** * Specular color. * @protected - * @type {og.Vec3} + * @type {Vec3} */ this._specular = params.specular || new Vec3(0.18, 0.18, 0.18); @@ -105,7 +105,7 @@ class LightSource { * Creates clone of the current light object. * @todo: TODO * @public - * @returns {og.LightSource} + * @returns {LightSource} */ clone() { // TODO @@ -158,8 +158,8 @@ class LightSource { /** * Set light source position, or if it is a directional type sets light direction vector. * @public - * @param {og.Vec3} position - Light position or direction vector. - * @returns {og.LightSource} + * @param {Vec3} position - Light position or direction vector. + * @returns {LightSource} */ setPosition3v(position) { this._position.x = position.x; @@ -171,8 +171,8 @@ class LightSource { /** * Set light source position, or if it is a directional type sets light direction vector. * @public - * @param {og.Vec3} position - Light position or direction vector. - * @returns {og.LightSource} + * @param {Vec3} position - Light position or direction vector. + * @returns {LightSource} */ setPosition(x, y, z) { this._position.x = x; @@ -184,7 +184,7 @@ class LightSource { /** * Returns light source position, or if it is a directional type sets light direction vector. * @public - * @returns {og.Vec3} - Light source position/direction. + * @returns {Vec3} - Light source position/direction. */ getPosition() { return this._position.clone(); @@ -193,8 +193,8 @@ class LightSource { /** * Set ambient color. * @public - * @param {og.Vec3} rgb - Ambient color. - * @returns {og.LightSource} + * @param {Vec3} rgb - Ambient color. + * @returns {LightSource} */ setAmbient3v(rgb) { return this.setAmbient(rgb.x, rgb.y, rgb.z); @@ -203,8 +203,8 @@ class LightSource { /** * Set diffuse color. * @public - * @param {og.Vec3} rgb - Diffuse color. - * @returns {og.LightSource} + * @param {Vec3} rgb - Diffuse color. + * @returns {LightSource} */ setDiffuse3v(rgb) { return this.setDiffuse(rgb.x, rgb.y, rgb.z); @@ -213,8 +213,8 @@ class LightSource { /** * Set specular color. * @public - * @param {og.Vec3} rgb - Specular color. - * @returns {og.LightSource} + * @param {Vec3} rgb - Specular color. + * @returns {LightSource} */ setSpecular3v(rgb) { return this.setSpecular(rgb.x, rgb.y, rgb.z); @@ -223,8 +223,8 @@ class LightSource { /** * Set ambient color. * @public - * @param {og.Vec3} rgb - Ambient color. - * @returns {og.LightSource} + * @param {Vec3} rgb - Ambient color. + * @returns {LightSource} */ setAmbient(r, g, b) { this._ambient.set(r, g, b); @@ -243,7 +243,7 @@ class LightSource { /** * Set diffuse color. * @public - * @returns {og.LightSource} + * @returns {LightSource} */ setDiffuse(r, g, b) { this._diffuse.set(r, g, b); @@ -262,7 +262,7 @@ class LightSource { /** * Set specular color. * @public - * @returns {og.LightSource} + * @returns {LightSource} */ setSpecular(r, g, b) { this._specular.set(r, g, b); @@ -281,7 +281,7 @@ class LightSource { /** * Set material shininess. * @public - * @returns {og.LightSource} + * @returns {LightSource} */ setShininess(shininess) { this._shininess = shininess; @@ -298,7 +298,7 @@ class LightSource { /** * Sets light to black. * @public - * @returns {og.LightSource} + * @returns {LightSource} */ setBlack() { this._ambient.clear(); @@ -320,8 +320,8 @@ class LightSource { /** * Adds current light to the render node scene. * @public - * @param {og.scene.RenderNode} renderNode - Render node scene. - * @returns {og.LightSource} + * @param {scene.RenderNode} renderNode - Render node scene. + * @returns {LightSource} */ addTo(renderNode) { this._renderNode = renderNode; diff --git a/src/og/math.js b/src/og/math.js index 8a3b83a0..61c132d3 100644 --- a/src/og/math.js +++ b/src/og/math.js @@ -299,11 +299,11 @@ export function bezier1v(t, p0, p1, p2, p3) { * Performs a 3D bezier interpolation. * @function * @param {number} t - Interpolation value. - * @param {og.Vec3} p0 - First control point. - * @param {og.Vec3} p1 - Second control point. - * @param {og.Vec3} p2 - Third control point. - * @param {og.Vec3} p3 - Fourth control point. - * @returns {og.Vec3} - + * @param {Vec3} p0 - First control point. + * @param {Vec3} p1 - Second control point. + * @param {Vec3} p2 - Third control point. + * @param {Vec3} p3 - Fourth control point. + * @returns {Vec3} - */ export function bezier3v(t, p0, p1, p2, p3) { var u = 1 - t; diff --git a/src/og/math/Mat3.js b/src/og/math/Mat3.js index 1a60b654..9121682a 100644 --- a/src/og/math/Mat3.js +++ b/src/og/math/Mat3.js @@ -26,7 +26,7 @@ export class Mat3 { * Sets column-major order array matrix. * @public * @param {Array.} m - Matrix array. - * @returns {og.Mat3} + * @returns {Mat3} */ set(m) { this._m[0] = m[0]; @@ -44,7 +44,7 @@ export class Mat3 { /** * Duplicates a Mat3 instance. * @public - * @returns {og.Mat3} + * @returns {Mat3} */ clone() { var res = new Mat3(); @@ -55,8 +55,8 @@ export class Mat3 { /** * Copy matrix. * @public - * @param {og.Mat3} a - Matrix to copy. - * @returns {og.Mat3} + * @param {Mat3} a - Matrix to copy. + * @returns {Mat3} */ copy(a) { return this.set(a._m); @@ -65,7 +65,7 @@ export class Mat3 { /** * Creates trasposed matrix from the current. * @public - * @returns {og.Mat3} + * @returns {Mat3} */ transposeTo() { var res = new Mat3(); @@ -79,7 +79,7 @@ export class Mat3 { /** * Sets matrix to identity. * @public - * @returns {og.Mat3} + * @returns {Mat3} */ setIdentity() { this._m[0] = 1; this._m[1] = 0; this._m[2] = 0; @@ -91,8 +91,8 @@ export class Mat3 { /** * Multiply to 3d vector. * @public - * @params {og.Vec3} p - 3d vector. - * @returns {og.Vec3} + * @params {Vec3} p - 3d vector. + * @returns {Vec3} */ mulVec(p) { var d = p.x, e = p.y, g = p.z; @@ -107,7 +107,7 @@ export class Mat3 { /** * Converts to 4x4 matrix. * @public - * @returns {og.Mat4} + * @returns {Mat4} */ toMatrix4() { var res = new Mat4(); @@ -137,7 +137,7 @@ export class Mat3 { /** * Mat3 factory. * @static - * @return {og.Mat3} + * @return {Mat3} */ export function mat3() { return new Mat3(); diff --git a/src/og/math/Mat4.js b/src/og/math/Mat4.js index 14e289ef..4fedafee 100644 --- a/src/og/math/Mat4.js +++ b/src/og/math/Mat4.js @@ -22,7 +22,7 @@ export class Mat4 { /** * Returns identity matrix instance. * @static - * @returns {og.Mat4} - + * @returns {Mat4} - */ static get identity() { var res = new Mat4(); @@ -37,7 +37,7 @@ export class Mat4 { * Sets column-major order array matrix. * @public * @param {Array.} m - Matrix array. - * @returns {og.Mat4} - + * @returns {Mat4} - */ set(m) { this._m[0] = m[0]; @@ -62,7 +62,7 @@ export class Mat4 { /** * Duplicates a Matrix3 instance. * @public - * @returns {og.Mat4} - + * @returns {Mat4} - */ clone() { var res = new Mat4(); @@ -73,7 +73,7 @@ export class Mat4 { /** * Copy matrix. * @public - * @param {og.Mat3} a - Matrix to copy. + * @param {Mat3} a - Matrix to copy. */ copy(a) { this.set(a._m); @@ -82,7 +82,7 @@ export class Mat4 { /** * Converts to 3x3 matrix. * @public - * @returns {og.Mat3} - + * @returns {Mat3} - */ toMatrix3() { var res = new Mat3(); @@ -103,8 +103,8 @@ export class Mat4 { /** * Multiply to 3d vector. * @public - * @param {og.Vec3} p - 3d vector. - * @returns {og.Vec3} - + * @param {Vec3} p - 3d vector. + * @returns {Vec3} - */ mulVec3(p) { var d = p.x, e = p.y, g = p.z; @@ -118,8 +118,8 @@ export class Mat4 { /** * Multiply to 4d vector. * @public - * @param {og.Vec4} p - 4d vector. - * @returns {og.Vec4} - + * @param {Vec4} p - 4d vector. + * @returns {Vec4} - */ mulVec4(p) { var d = p.x, e = p.y, g = p.z, f = p.w; @@ -134,7 +134,7 @@ export class Mat4 { /** * Creates an inversed 3x3 matrix of the current. * @public - * @returns {og.Mat3} - + * @returns {Mat3} - */ toInverseMatrix3() { var a = this._m; @@ -168,7 +168,7 @@ export class Mat4 { /** * Creates an inversed matrix of the current. * @public - * @returns {og.Mat4} - + * @returns {Mat4} - */ inverseTo(res) { var c = this._m[0], d = this._m[1], e = this._m[2], g = this._m[3], @@ -200,7 +200,7 @@ export class Mat4 { /** * Creates a trasposed matrix of the current. * @public - * @returns {og.Mat4} - + * @returns {Mat4} - */ transposeTo() { var res = new Mat4(); @@ -214,7 +214,7 @@ export class Mat4 { /** * Sets matrix to identity. * @public - * @returns {og.Mat4} - + * @returns {Mat4} - */ setIdentity() { this._m[0] = 1; this._m[1] = 0; this._m[2] = 0; this._m[3] = 0; @@ -227,8 +227,8 @@ export class Mat4 { /** * Computes the product of two matrices. * @public - * @param {og.Mat4} mx - Matrix to multiply. - * @returns {og.Mat4} - + * @param {Mat4} mx - Matrix to multiply. + * @returns {Mat4} - */ mul(mx) { let d = this._m[0], e = this._m[1], g = this._m[2], f = this._m[3], @@ -252,8 +252,8 @@ export class Mat4 { /** * Add translation vector to the current matrix. * @public - * @param {og.Vec3} v - Translate vector. - * @returns {og.Mat4} - + * @param {Vec3} v - Translate vector. + * @returns {Mat4} - */ translate(v) { var d = v.x, e = v.y, b = v.z; @@ -268,8 +268,8 @@ export class Mat4 { /** * Sets translation matrix to the position. * @public - * @param {og.Vec3} v - Translate to position. - * @returns {og.Mat4} - + * @param {Vec3} v - Translate to position. + * @returns {Mat4} - */ translateToPosition(v) { var a = this._m; @@ -282,9 +282,9 @@ export class Mat4 { /** * Rotate currrent matrix around the aligned axis and angle. * @public - * @param {og.Vec3} u - Aligned axis. + * @param {Vec3} u - Aligned axis. * @param {number} angle - Aligned axis angle in radians. - * @returns {og.Mat4} - + * @returns {Mat4} - * @todo: OPTIMIZE: reveal multiplication */ rotate(u, angle) { @@ -302,9 +302,9 @@ export class Mat4 { /** * Sets current rotation matrix around the aligned axis and angle. * @public - * @param {og.Vec3} u - Aligned axis. + * @param {Vec3} u - Aligned axis. * @param {number} angle - Aligned axis angle in radians. - * @returns {og.Mat4} - + * @returns {Mat4} - */ setRotation(u, angle) { var c = Math.cos(angle), @@ -320,9 +320,9 @@ export class Mat4 { /** * Gets the rotation matrix from one vector to another. * @public - * @param {og.Vec3} a - Firtst vector. - * @param {og.Vec3} b - Second vector. - * @returns {og.Mat4} - + * @param {Vec3} a - Firtst vector. + * @param {Vec3} b - Second vector. + * @returns {Mat4} - */ rotateBetweenVectors(a, b) { var q = Quat.getRotationBetweenVectors(a, b); @@ -332,8 +332,8 @@ export class Mat4 { /** * Scale current matrix to the vector values. * @public - * @param {og.Vec3} v - Scale vector. - * @returns {og.Mat4} - + * @param {Vec3} v - Scale vector. + * @returns {Mat4} - */ scale(v) { var mx = this._m; @@ -352,7 +352,7 @@ export class Mat4 { * @param {number} top - * @param {number} near - * @param {number} far - - * @returns {og.Mat4} - + * @returns {Mat4} - */ setPerspective(left, right, bottom, top, near, far) { var h = right - left, i = top - bottom, j = far - near; @@ -384,7 +384,7 @@ export class Mat4 { * @param {number} top - * @param {number} near - * @param {number} far - - * @return {og.Mat4} - + * @return {Mat4} - */ setOrtho(left, right, bottom, top, near, far) { @@ -418,7 +418,7 @@ export class Mat4 { * @param {number} ax - Rotation angle in radians arond X axis. * @param {number} ay - Rotation angle in radians arond Y axis. * @param {number} az - Rotation angle in radians arond Z axis. - * @returns {og.Mat4} - + * @returns {Mat4} - */ eulerToMatrix(ax, ay, az) { var a = Math.cos(ax), @@ -452,7 +452,7 @@ export class Mat4 { /** * Mat4 factory. * @static - * @returns {og.Mat4} - + * @returns {Mat4} - */ export function mat4() { return new og.Mat4(); diff --git a/src/og/math/Plane.js b/src/og/math/Plane.js index 5105769b..363d925d 100644 --- a/src/og/math/Plane.js +++ b/src/og/math/Plane.js @@ -6,8 +6,8 @@ import { Vec3 } from './Vec3.js'; /** * Plane class. * @constructor - * @param {og.Vec3} [p] - Plane point. - * @param {og.Vec3} [n] - Planet normal. + * @param {Vec3} [p] - Plane point. + * @param {Vec3} [n] - Planet normal. */ class Plane { constructor(p, n) { diff --git a/src/og/math/Quat.js b/src/og/math/Quat.js index e3466049..191f1118 100644 --- a/src/og/math/Quat.js +++ b/src/og/math/Quat.js @@ -58,7 +58,7 @@ export class Quat { /** * Identity Quat. * @const - * @type {og.Quat} + * @type {Quat} */ static get IDENTITY() { return new Quat(0.0, 0.0, 0.0, 1.0); @@ -68,7 +68,7 @@ export class Quat { * Returns a Quat represents rotation around X axis. * @static * @param {number} a - The angle in radians to rotate around the axis. - * @returns {og.Quat} - + * @returns {Quat} - */ static xRotation(a) { a *= 0.5; @@ -79,7 +79,7 @@ export class Quat { * Returns a Quat represents rotation around Y axis. * @static * @param {number} a - The angle in radians to rotate around the axis. - * @returns {og.Quat} - + * @returns {Quat} - */ static yRotation(a) { a *= 0.5; @@ -90,7 +90,7 @@ export class Quat { * Returns a Quat represents rotation around Z axis. * @static * @param {number} a - The angle in radians to rotate around the axis. - * @returns {og.Quat} - + * @returns {Quat} - */ static zRotation(a) { a *= 0.5; @@ -100,9 +100,9 @@ export class Quat { /** * Computes a Quat representing a rotation around an axis. * @static - * @param {og.Vec3} axis - The axis of rotation. + * @param {Vec3} axis - The axis of rotation. * @param {number} [angle=0.0] The angle in radians to rotate around the axis. - * @returns {og.Quat} - + * @returns {Quat} - */ static axisAngleToQuat(axis, angle) { angle = angle || 0.0; @@ -119,9 +119,9 @@ export class Quat { /** * Computes a rotation from the given heading and up vector. * @static - * @param {og.Vec3} forward - Heading target coordinates. - * @param {og.Vec3} up - Up vector. - * @returns {og.Quat} - + * @param {Vec3} forward - Heading target coordinates. + * @param {Vec3} up - Up vector. + * @returns {Quat} - */ static getLookRotation(forward, up) { @@ -173,9 +173,9 @@ export class Quat { /** * Computes a Quat from from source point heading to the destination point. * @static - * @param {og.Vec3} sourcePoint - Source coordinate. - * @param {og.Vec3} destPoint - Destination coordinate. - * @returns {og.Quat} - + * @param {Vec3} sourcePoint - Source coordinate. + * @param {Vec3} destPoint - Destination coordinate. + * @returns {Quat} - */ static getLookAtSourceDest(sourcePoint, destPoint) { var forwardVector = destPoint.subA(sourcePoint).normalize(); @@ -194,9 +194,9 @@ export class Quat { /** * Compute rotation between two vectors. * @static - * @param {og.Vec3} u - First vector. - * @param {og.Vec3} v - Second vector. - * @returns {og.Quat} - + * @param {Vec3} u - First vector. + * @param {Vec3} v - Second vector. + * @returns {Quat} - */ static getRotationBetweenVectors(u, v) { var w = u.cross(v); @@ -207,10 +207,10 @@ export class Quat { /** * Compute rotation between two vectors. * @static - * @param {og.Vec3} u - First vector. - * @param {og.Vec3} v - Second vector. + * @param {Vec3} u - First vector. + * @param {Vec3} v - Second vector. * @param {Quat} res - * @returns {og.Quat} - + * @returns {Quat} - */ static getRotationBetweenVectorsRes(u, v, res) { var w = u.cross(v); @@ -223,10 +223,10 @@ export class Quat { * for exactly opposite vectors. If vectors exaclty in the same * direction than returns identity Quat. * @static - * @param {og.Vec3} source - First vector. - * @param {og.Vec3} dest - Second vector. - * @param {og.Vec3} up - Up vector. - * @returns {og.Quat} - + * @param {Vec3} source - First vector. + * @param {Vec3} dest - Second vector. + * @param {Vec3} up - Up vector. + * @returns {Quat} - */ static getRotationBetweenVectorsUp(source, dest, up) { var dot = source.dot(dest); @@ -248,8 +248,8 @@ export class Quat { /** * Returns true if the components are zero. * @public - * @param {og.Quat} q - Quat to subtract. - * @returns {og.Quat} - + * @param {Quat} q - Quat to subtract. + * @returns {Quat} - */ isZero() { return this.x === 0.0 && this.y === 0.0 && this.z === 0.0 && this.w === 0.0; @@ -258,7 +258,7 @@ export class Quat { /** * Clear Quat. Sets zeroes. * @public - * @returns {og.Quat} - + * @returns {Quat} - */ clear() { this.x = this.y = this.z = this.w = 0; @@ -272,7 +272,7 @@ export class Quat { * @param {Number} [y=0.0] The Y component. * @param {Number} [z=0.0] The Z component. * @param {Number} [w=0.0] The W component. - * @returns {og.Quat} - + * @returns {Quat} - */ set(x, y, z, w) { this.x = x; @@ -285,8 +285,8 @@ export class Quat { /** * Copy Quat values. * @public - * @param {og.Quat} q - Copy Quat. - * @returns {og.Quat} - + * @param {Quat} q - Copy Quat. + * @returns {Quat} - */ copy(q) { this.x = q.x; @@ -299,7 +299,7 @@ export class Quat { /** * Set current Quat instance to identity Quat. * @public - * @returns {og.Quat} - + * @returns {Quat} - */ setIdentity() { this.x = 0.0; @@ -312,7 +312,7 @@ export class Quat { /** * Duplicates a Quat instance. * @public - * @returns {og.Quat} - + * @returns {Quat} - */ clone() { return new Quat(this.x, this.y, this.z, this.w); @@ -321,8 +321,8 @@ export class Quat { /** * Computes the componentwise sum of two Quats. * @public - * @param {og.Quat} q - Quat to add. - * @returns {og.Quat} - + * @param {Quat} q - Quat to add. + * @returns {Quat} - */ add(q) { return new Quat(this.x + q.x, this.y + q.y, this.z + q.z, this.w + q.w); @@ -331,8 +331,8 @@ export class Quat { /** * Computes the componentwise difference of two Quats. * @public - * @param {og.Quat} q - Quat to subtract. - * @returns {og.Quat} - + * @param {Quat} q - Quat to subtract. + * @returns {Quat} - */ sub(q) { return new Quat(this.x - q.x, this.y - q.y, this.z - q.z, this.w - q.w); @@ -342,7 +342,7 @@ export class Quat { * Multiplies the provided Quat componentwise by the provided scalar. * @public * @param {Number} scale - The scalar to multiply with. - * @returns {og.Quat} - + * @returns {Quat} - */ scaleTo(scale) { return new Quat(this.x * scale, this.y * scale, this.z * scale, this.w * scale); @@ -352,7 +352,7 @@ export class Quat { * Multiplies the provided Quat componentwise. * @public * @param {Number} scale - The scalar to multiply with. - * @returns {og.Quat} - + * @returns {Quat} - */ scale(scale) { this.x *= scale; this.y *= scale; this.z *= scale; this.w *= scale; @@ -374,7 +374,7 @@ export class Quat { * @param {number} lat - Latitude. * @param {number} lon - Longitude. * @param {number} angle - Angle in radians. - * @returns {og.Quat} - + * @returns {Quat} - */ setFromSphericalCoords(lat, lon, angle) { var sin_a = Math.sin(angle / 2); @@ -393,9 +393,9 @@ export class Quat { /** * Sets rotation with the given heading and up vectors. * @static - * @param {og.Vec3} forward - Heading target coordinates. - * @param {og.Vec3} up - Up vector. - * @returns {og.Quat} - + * @param {Vec3} forward - Heading target coordinates. + * @param {Vec3} up - Up vector. + * @returns {Quat} - */ setLookRotation(forward, up) { @@ -466,9 +466,9 @@ export class Quat { /** * Sets current Quat representing a rotation around an axis. * @public - * @param {og.Vec3} axis - The axis of rotation. + * @param {Vec3} axis - The axis of rotation. * @param {number} angle The angle in radians to rotate around the axis. - * @returns {og.Quat} - + * @returns {Quat} - */ setFromAxisAngle(axis, angle) { var v = axis.normal(); @@ -507,7 +507,7 @@ export class Quat { * @param {number} pitch - Pitch angle in degrees. * @param {number} yaw - Yaw angle in degrees. * @param {number} roll - Roll angle in degrees. - * @returns {og.Quat} - + * @returns {Quat} - */ setFromEulerAngles(pitch, yaw, roll) { var ex = pitch * math.RADIANS_HALF, @@ -563,8 +563,8 @@ export class Quat { /** * Computes a Quat from the provided 4x4 matrix instance. * @public - * @param {og.Mat4} m - The rotation matrix. - * @returns {og.Quat} - + * @param {Mat4} m - The rotation matrix. + * @returns {Quat} - */ setFromMatrix4(m) { var tr, s, q = []; @@ -610,7 +610,7 @@ export class Quat { /** * Converts current Quat to the rotation 4x4 matrix. * @public - * @returns {og.Mat4} - + * @returns {Mat4} - */ getMat4(out) { var xs = this.x + this.x; @@ -632,7 +632,7 @@ export class Quat { /** * Converts current Quat to the rotation 3x3 matrix. * @public - * @returns {og.Mat3} - + * @returns {Mat3} - * @todo NOT TESTED */ getMat3() { @@ -668,8 +668,8 @@ export class Quat { /** * Returns quatrenion and vector production. * @public - * @param {og.Vec3} v - 3d Vector. - * @returns {og.Vec3} - + * @param {Vec3} v - 3d Vector. + * @returns {Vec3} - */ mulVec3(v) { @@ -700,8 +700,8 @@ export class Quat { /** * Computes the product of two Quats. * @public - * @param {og.Quat} q - Quat to multiply. - * @returns {og.Quat} - + * @param {Quat} q - Quat to multiply. + * @returns {Quat} - */ mul(q) { var d = this.x, e = this.y, g = this.z, a = this.w; @@ -716,8 +716,8 @@ export class Quat { /** * Computes the product of two Quats. * @public - * @param {og.Quat} q - Quat to multiply. - * @returns {og.Quat} - + * @param {Quat} q - Quat to multiply. + * @returns {Quat} - */ mulA(q) { var d = this.x, e = this.y, g = this.z, a = this.w; @@ -732,7 +732,7 @@ export class Quat { /** * Gets the conjugate of the Quat. * @public - * @returns {og.Quat} - + * @returns {Quat} - */ conjugate() { return new Quat(-this.x, -this.y, -this.z, this.w); @@ -741,7 +741,7 @@ export class Quat { /** * Computes the inverse of the Quat. * @public - * @returns {og.Quat} - + * @returns {Quat} - */ inverse() { var n = 1 / this.magnitude2(); @@ -771,7 +771,7 @@ export class Quat { /** * Computes the dot (scalar) product of two Quats. * @public - * @param {og.Quat} q - Second quatrnion. + * @param {Quat} q - Second quatrnion. * @returns {number} - */ dot(q) { @@ -781,7 +781,7 @@ export class Quat { /** * Current Quat normalization. * @public - * @returns {og.Quat} - + * @returns {Quat} - */ normalize() { var c = this.x, d = this.y, e = this.z, g = this.w, @@ -804,7 +804,7 @@ export class Quat { /** * Compares two Quats. * @public - * @param {og.Quat} q - Second quatrnion. + * @param {Quat} q - Second quatrnion. * @returns {Boolean} - */ isEqual(q) { @@ -818,9 +818,9 @@ export class Quat { /** * Performs a spherical linear interpolation between two Quats. * @public - * @param {og.Quat} b - The end rotation Quat. + * @param {Quat} b - The end rotation Quat. * @param {number} t - interpolation amount between the two Quats. - * @returns {og.Quat} - + * @returns {Quat} - */ slerp(b, t) { @@ -929,7 +929,7 @@ export class Quat { * @param {Number} [y=0.0] The Y component. * @param {Number} [z=0.0] The Z component. * @param {Number} [w=0.0] The W component. - * @returns {og.Quat} - + * @returns {Quat} - */ export function quat(x, y, z, w) { return new Quat(x, y, z, w); diff --git a/src/og/math/Ray.js b/src/og/math/Ray.js index f459a0d1..feb27e3e 100644 --- a/src/og/math/Ray.js +++ b/src/og/math/Ray.js @@ -10,8 +10,8 @@ import { Vec3 } from './Vec3.js'; /** * Represents a ray that extends infinitely from the provided origin in the provided direction. * @class - * @param {og.Vec3} origin - The origin of the ray. - * @param {og.Vec3} direction - The direction of the ray. + * @param {Vec3} origin - The origin of the ray. + * @param {Vec3} direction - The direction of the ray. */ export class Ray { constructor(origin, direction) { @@ -19,14 +19,14 @@ export class Ray { /** * The origin of the ray. * @public - * @type {og.Vec3} + * @type {Vec3} */ this.origin = origin || new Vec3(); /** * The direction of the ray. * @public - * @type {og.Vec3} + * @type {Vec3} */ this.direction = direction || new Vec3(); } @@ -44,9 +44,9 @@ export class Ray { /** * Sets a ray parameters. * @public - * @param {og.Vec3} origin - The origin of the ray. - * @param {og.Vec3} direction - The direction of the ray. - * @returns {og.Ray} + * @param {Vec3} origin - The origin of the ray. + * @param {Vec3} direction - The direction of the ray. + * @returns {Ray} */ set(origin, direction) { this.origin = origin; @@ -58,7 +58,7 @@ export class Ray { * Computes the point along the ray on the distance. * @public * @param {number} distance - Point distance. - * @returns {og.Vec3} + * @returns {Vec3} */ getPoint(distance) { return Vec3.add(this.origin, this.direction.scaleTo(distance)); @@ -67,10 +67,10 @@ export class Ray { /** * Returns ray hit a triange result. * @public - * @param {og.Vec3} v0 - First triangle corner coordinate. - * @param {og.Vec3} v1 - Second triangle corner coordinate. - * @param {og.Vec3} v2 - Third triangle corner coordinate. - * @param {og.Vec3} res - Hit point object pointer that stores hit result. + * @param {Vec3} v0 - First triangle corner coordinate. + * @param {Vec3} v1 - Second triangle corner coordinate. + * @param {Vec3} v2 - Third triangle corner coordinate. + * @param {Vec3} res - Hit point object pointer that stores hit result. * @returns {number} - Hit code, could 0 - og.Ray.OUTSIDE, 1 - og.Ray.INSIDE, * 2 - og.Ray.INPLANE and 3 - og.Ray.AWAY(ray goes away from triangle). */ @@ -130,10 +130,10 @@ export class Ray { /** * Gets a ray hit a plane result. If the ray cross the plane returns 1 - og.Ray.INSIDE otherwise returns 0 - og.Ray.OUTSIDE. * @public - * @param {og.Vec3} v0 - First plane point. - * @param {og.Vec3} v1 - Second plane point. - * @param {og.Vec3} v2 - Third plane point. - * @param {og.Vec3} res - Hit point object pointer that stores hit result. + * @param {Vec3} v0 - First plane point. + * @param {Vec3} v1 - Second plane point. + * @param {Vec3} v2 - Third plane point. + * @param {Vec3} res - Hit point object pointer that stores hit result. * @returns {number} */ hitPlane(v0, v1, v2, res) { @@ -171,8 +171,8 @@ export class Ray { /** * Returns a ray hit sphere coordiante. If there isn't hit returns null. * @public - * @param {og.bv.Sphere} sphere - Sphere object. - * @returns {og.Vec3} + * @param {bv.Sphere} sphere - Sphere object. + * @returns {Vec3} */ hitSphere(sphere) { var r = sphere.radius, @@ -224,9 +224,9 @@ export class Ray { /** * Ray object creator. * @function - * @param {og.Vec3} origin - The origin of the ray. - * @param {og.Vec3} direction - The direction of the ray. - * @returns {og.Ray} + * @param {Vec3} origin - The origin of the ray. + * @param {Vec3} direction - The direction of the ray. + * @returns {Ray} */ export function ray(origin, direction) { return new Ray(origin, direction); diff --git a/src/og/math/Vec2.js b/src/og/math/Vec2.js index fd630f25..0116ac8c 100644 --- a/src/og/math/Vec2.js +++ b/src/og/math/Vec2.js @@ -42,9 +42,9 @@ export class Vec2 { /** * Returns summary vector. * @static - * @param {og.math.Vec2} a - First vector. - * @param {og.math.Vec2} b - Second vector. - * @returns {og.math.Vec2} - Summary vector. + * @param {math.Vec2} a - First vector. + * @param {math.Vec2} b - Second vector. + * @returns {math.Vec2} - Summary vector. */ static add(a, b) { var res = new Vec2(a.x, a.y); @@ -55,9 +55,9 @@ export class Vec2 { /** * Returns two vectors subtraction. * @static - * @param {og.math.Vec2} a - First vector. - * @param {og.math.Vec2} b - Second vector. - * @returns {og.math.Vec2} - Vectors subtraction. + * @param {math.Vec2} a - First vector. + * @param {math.Vec2} b - Second vector. + * @returns {math.Vec2} - Vectors subtraction. */ static sub(a, b) { var res = new Vec2(a.x, a.y); @@ -68,9 +68,9 @@ export class Vec2 { /** * Returns scaled vector. * @static - * @param {og.math.Vec2} a - Input vector. + * @param {math.Vec2} a - Input vector. * @param {number} scale - Scale value. - * @returns {og.math.Vec2} + * @returns {math.Vec2} */ static scale(a, scale) { var res = new Vec2(a.x, a.y); @@ -81,9 +81,9 @@ export class Vec2 { /** * Returns two vectors production. * @static - * @param {og.math.Vec2} a - First vector. - * @param {og.math.Vec2} b - Second vector. - * @returns {og.math.Vec2} + * @param {math.Vec2} a - First vector. + * @param {math.Vec2} b - Second vector. + * @returns {math.Vec2} */ static mul(a, b) { var res = new Vec2(a.x, a.y); @@ -94,9 +94,9 @@ export class Vec2 { /** * Returns vector components division product one to another. * @static - * @param {og.math.Vec2} a - First vector. - * @param {og.math.Vec2} b - Second vector. - * @returns {og.math.Vec2} + * @param {math.Vec2} a - First vector. + * @param {math.Vec2} b - Second vector. + * @returns {math.Vec2} */ static div(a, b) { var res = new Vec2(a.x, a.y); @@ -107,9 +107,9 @@ export class Vec2 { /** * Get projection of the first vector to the second. * @static - * @param {og.math.Vec2} b - First vector. - * @param {og.math.Vec2} a - Second vector. - * @returns {og.math.Vec2} + * @param {math.Vec2} b - First vector. + * @param {math.Vec2} a - Second vector. + * @returns {math.Vec2} */ static proj_b_to_a(b, a) { return a.scaleTo(a.dot(b) / a.dot(a)); @@ -118,8 +118,8 @@ export class Vec2 { /** * Gets angle between two vectors. * @static - * @param {og.math.Vec2} a - First vector. - * @param {og.math.Vec2} b - Second vector. + * @param {math.Vec2} a - First vector. + * @param {math.Vec2} b - Second vector. * @returns {number} */ static angle(a, b) { @@ -129,9 +129,9 @@ export class Vec2 { /** * Makes vectors normalized and orthogonal to each other. * @static - * @param {og.math.Vec2} normal - Normal vector. - * @param {og.math.Vec2} tangent - Tangent vector. - * @returns {og.math.Vec2} + * @param {math.Vec2} normal - Normal vector. + * @param {math.Vec2} tangent - Tangent vector. + * @returns {math.Vec2} */ static orthoNormalize(normal, tangent) { normal = normal.norm(); @@ -142,7 +142,7 @@ export class Vec2 { /** * Converts to 3d vector, third value is 0.0. * @public - * @returns {og.Vec3} + * @returns {Vec3} */ toVector3() { return new Vec3(this.x, this.y, 0); @@ -151,7 +151,7 @@ export class Vec2 { /** * Returns clone vector. * @public - * @returns {og.math.Vec2} + * @returns {math.Vec2} */ clone() { return new Vec2(this.x, this.y); @@ -160,7 +160,7 @@ export class Vec2 { /** * Compares with vector. Returns true if it equals another. * @public - * @param {og.math.Vec2} p - Vector to compare. + * @param {math.Vec2} p - Vector to compare. * @returns {boolean} */ equal(p) { @@ -169,8 +169,8 @@ export class Vec2 { /** * Copy input vector's values. - * @param {og.math.Vec2} point2 - Vector to copy. - * @returns {og.math.Vec2} + * @param {math.Vec2} point2 - Vector to copy. + * @returns {math.Vec2} */ copy(point2) { this.x = point2.x; @@ -199,8 +199,8 @@ export class Vec2 { /** * Adds vector to the current. * @public - * @param {og.math.Vec2} - * @returns {og.math.Vec2} + * @param {math.Vec2} + * @returns {math.Vec2} */ addA(v) { this.x += v.x; @@ -211,8 +211,8 @@ export class Vec2 { /** * Summarize two vectors. * @public - * @param {og.math.Vec2} - * @returns {og.math.Vec2} + * @param {math.Vec2} + * @returns {math.Vec2} */ add(v) { return new Vec2(this.x + v.x, this.y + v.y); @@ -221,8 +221,8 @@ export class Vec2 { /** * Subtract vector from the current where results saved on the current instance. * @public - * @param {og.math.Vec2} v - Subtract vector. - * @returns {og.math.Vec2} + * @param {math.Vec2} v - Subtract vector. + * @returns {math.Vec2} */ subA(v) { this.x -= v.x; @@ -233,8 +233,8 @@ export class Vec2 { /** * Subtract vector from the current. * @public - * @param {og.math.Vec2} v - Subtract vector. - * @returns {og.math.Vec2} + * @param {math.Vec2} v - Subtract vector. + * @returns {math.Vec2} */ sub(v) { return new Vec2(this.x - v.x, this.y - v.y); @@ -244,7 +244,7 @@ export class Vec2 { * Scale current vector. * @public * @param {number} scale - Scale value. - * @returns {og.math.Vec2} + * @returns {math.Vec2} */ scale(scale) { this.x *= scale; @@ -256,7 +256,7 @@ export class Vec2 { * Scale current vector to another instance. * @public * @param {number} scale - Scale value. - * @returns {og.math.Vec2} + * @returns {math.Vec2} */ scaleTo(scale) { return new Vec2(this.x * scale, this.y * scale); @@ -265,8 +265,8 @@ export class Vec2 { /** * Multiply current vector object to another and store result in the current instance. * @public - * @param {og.math.Vec2} vec - Multiply vector. - * @returns {og.math.Vec2} + * @param {math.Vec2} vec - Multiply vector. + * @returns {math.Vec2} */ mulA(vec) { this.x *= vec.x; @@ -277,8 +277,8 @@ export class Vec2 { /** * Multiply current vector object to another and returns new vector instance. * @public - * @param {og.math.Vec2} vec - Multiply vector. - * @returns {og.math.Vec2} + * @param {math.Vec2} vec - Multiply vector. + * @returns {math.Vec2} */ mul(vec) { return new Vec2(this.x * vec.x, this.y * vec.y); @@ -287,8 +287,8 @@ export class Vec2 { /** * Divide current vector's components to another. Results stores in the current vector object. * @public - * @param {og.math.Vec2} - * @returns {og.math.Vec2} + * @param {math.Vec2} + * @returns {math.Vec2} */ divA(vec) { this.x /= vec.x; @@ -299,7 +299,7 @@ export class Vec2 { /** * Gets vectors dot production. * @public - * @param {og.math.Vec2} v - Another vector. + * @param {math.Vec2} v - Another vector. * @returns {number} */ dot(v) { @@ -319,8 +319,8 @@ export class Vec2 { /** * Gets vectors cross production. * @public - * @param {og.math.Vec2} v - Another vector. - * @returns {og.math.Vec2} + * @param {math.Vec2} v - Another vector. + * @returns {math.Vec2} */ cross(v) { return this.x * v.y - this.y * v.x; @@ -329,7 +329,7 @@ export class Vec2 { /** * Sets vector to zero. * @public - * @returns {og.math.Vec2} + * @returns {math.Vec2} */ clear() { this.x = this.y = 0; @@ -339,7 +339,7 @@ export class Vec2 { /** * Returns normalized vector. * @public - * @returns {og.math.Vec2} + * @returns {math.Vec2} */ normal() { var res = new Vec2(); @@ -356,7 +356,7 @@ export class Vec2 { /** * Normalize current vector. * @public - * @returns {og.math.Vec2} + * @returns {math.Vec2} */ normalize() { var length = 1.0 / this.length(); @@ -379,7 +379,7 @@ export class Vec2 { /** * Gets distance to point. * @public - * @param {og.math.Vec2} p - Distant point. + * @param {math.Vec2} p - Distant point. * @returns {number} */ distance(p) { @@ -392,7 +392,7 @@ export class Vec2 { * @public * @param {number} x - Value X. * @param {number} y - Value Y. - * @returns {og.math.Vec2} + * @returns {math.Vec2} */ set(x, y) { this.x = x; @@ -403,7 +403,7 @@ export class Vec2 { /** * Negate current vector. * @public - * @returns {og.math.Vec2} + * @returns {math.Vec2} */ negate() { this.x = -this.x; @@ -414,7 +414,7 @@ export class Vec2 { /** * Negate current vector to another instance. * @public - * @returns {og.math.Vec2} + * @returns {math.Vec2} */ negateTo() { return new Vec2(-this.x, -this.y); @@ -423,9 +423,9 @@ export class Vec2 { /** * Gets projected point coordinates of the current vector on the ray. * @public - * @param {og.math.Vec2} pos - Ray position. - * @param {og.math.Vec2} direction - Ray direction. - * @returns {og.math.Vec2} + * @param {math.Vec2} pos - Ray position. + * @param {math.Vec2} direction - Ray direction. + * @returns {math.Vec2} */ projToRay(pos, direction) { var v = Vec2.proj_b_to_a(Vec2.sub(this, pos), direction); @@ -436,7 +436,7 @@ export class Vec2 { /** * Gets angle between two vectors. * @public - * @param {og.math.Vec2} a - Another vector. + * @param {math.Vec2} a - Another vector. * @returns {number} */ angle(a) { @@ -446,9 +446,9 @@ export class Vec2 { /** * Returns two vectors linear interpolation. * @public - * @param {og.math.Vec2} v2 - End vector. + * @param {math.Vec2} v2 - End vector. * @param {number} l - Interpolate value. - * @returns {og.math.Vec2} + * @returns {math.Vec2} */ lerp(v1, v2, l) { var res = Vec2.clone(this); @@ -470,9 +470,9 @@ export class Vec2 { * the vectors are treated as directions rather than points in space. The direction of the returned vector is interpolated * by the angle and its magnitude is interpolated between the magnitudes of from and to. * @public - * @param {og.math.Vec2} v2 - + * @param {math.Vec2} v2 - * @param {number} t - The parameter t is clamped to the range [0, 1]. - * @returns {og.math.Vec2} + * @returns {math.Vec2} */ slerp(v2, t) { var res = new Vec2(); @@ -507,7 +507,7 @@ export class Vec2 { * @function * @param {number} [x] - First cvalue. * @param {number} [y] - Second value. - * @returns {og.math.Vec2} + * @returns {math.Vec2} */ export function vec2(x, y) { return new Vec2(x, y); diff --git a/src/og/math/Vec3.js b/src/og/math/Vec3.js index 276b604a..070fd9e1 100644 --- a/src/og/math/Vec3.js +++ b/src/og/math/Vec3.js @@ -148,7 +148,7 @@ export class Vec3 { * Creates 3d vector from array. * @function * @param {Array.} arr - Input array (exactly 3 entries) - * @returns {og.Vec3} - + * @returns {Vec3} - */ static fromVec(arr) { return new Vec3(arr[0], arr[1], arr[2]); @@ -157,8 +157,8 @@ export class Vec3 { /** * Gets angle between two vectors. * @static - * @param {og.Vec3} a - First vector. - * @param {og.Vec3} b - Second vector. + * @param {Vec3} a - First vector. + * @param {Vec3} b - Second vector. * @returns {number} - */ static angle(a, b) { @@ -168,10 +168,10 @@ export class Vec3 { /** * Returns two vectors linear interpolation. * @static - * @param {og.Vec3} v1 - Start vector. - * @param {og.Vec3} v2 - End vector. + * @param {Vec3} v1 - Start vector. + * @param {Vec3} v2 - End vector. * @param {number} l - Interpolate value. - * @returns {og.Vec3} - + * @returns {Vec3} - */ static lerp(v1, v2, l) { return Vec3(v1.x + (v2.x - v1.x) * l, v1.y + (v2.y - v1.y) * l, v1.z + (v2.z - v1.z) * l); @@ -180,9 +180,9 @@ export class Vec3 { /** * Returns summary vector. * @static - * @param {og.Vec3} a - First vector. - * @param {og.Vec3} b - Second vector. - * @returns {og.Vec3} - Summary vector. + * @param {Vec3} a - First vector. + * @param {Vec3} b - Second vector. + * @returns {Vec3} - Summary vector. */ static add(a, b) { var res = new Vec3(a.x, a.y, a.z); @@ -193,9 +193,9 @@ export class Vec3 { /** * Returns two vectors subtraction. * @static - * @param {og.Vec3} a - First vector. - * @param {og.Vec3} b - Second vector. - * @returns {og.Vec3} - Vectors subtraction. + * @param {Vec3} a - First vector. + * @param {Vec3} b - Second vector. + * @returns {Vec3} - Vectors subtraction. */ static sub(a, b) { var res = new Vec3(a.x, a.y, a.z); @@ -206,9 +206,9 @@ export class Vec3 { /** * Returns scaled vector. * @static - * @param {og.Vec3} a - Input vector. + * @param {Vec3} a - Input vector. * @param {number} scale - Scale value. - * @returns {og.Vec3} - + * @returns {Vec3} - */ static scale(a, scale) { var res = new Vec3(a.x, a.y, a.z); @@ -219,9 +219,9 @@ export class Vec3 { /** * Returns two vectors production. * @static - * @param {og.Vec3} a - First vector. - * @param {og.Vec3} b - Second vector. - * @returns {og.Vec3} - + * @param {Vec3} a - First vector. + * @param {Vec3} b - Second vector. + * @returns {Vec3} - */ static mul(a, b) { var res = new Vec3(a.x, a.y, a.z); @@ -232,9 +232,9 @@ export class Vec3 { /** * Returns true if two vectors are non collinear. * @public - * @param {og.Vec3} a - First vector. - * @param {og.Vec3} b - Second vector. - * @returns {og.Vec3} - + * @param {Vec3} a - First vector. + * @param {Vec3} b - Second vector. + * @returns {Vec3} - */ static noncollinear(a, b) { return a.y * b.z - a.z * b.y || a.z * b.x - a.x * b.z || a.x * b.y - a.y * b.z; @@ -243,10 +243,10 @@ export class Vec3 { /** * Get projection of the vector to plane where n - normal to the plane. * @static - * @param {og.Vec3} b - Vector to project. - * @param {og.Vec3} n - Plane normal. - * @param {og.Vec3} [def] - Default value for non existed result. - * @returns {og.Vec3} - + * @param {Vec3} b - Vector to project. + * @param {Vec3} n - Plane normal. + * @param {Vec3} [def] - Default value for non existed result. + * @returns {Vec3} - */ static proj_b_to_plane(b, n, def) { var res = b.sub(n.scaleTo(n.dot(b) / n.dot(n))); @@ -259,9 +259,9 @@ export class Vec3 { /** * Get projection of the first vector to the second. * @static - * @param {og.Vec3} b - First vector. - * @param {og.Vec3} a - Second vector. - * @returns {og.Vec3} - + * @param {Vec3} b - First vector. + * @param {Vec3} a - Second vector. + * @returns {Vec3} - */ static proj_b_to_a(b, a) { return a.scaleTo(a.dot(b) / a.dot(a)); @@ -271,9 +271,9 @@ export class Vec3 { * Makes vectors normalized and orthogonal to each other. * Normalizes normal. Normalizes tangent and makes sure it is orthogonal to normal (that is, angle between them is 90 degrees). * @static - * @param {og.Vec3} normal - Normal vector. - * @param {og.Vec3} tangent - Tangent vector. - * @returns {og.Vec3} - + * @param {Vec3} normal - Normal vector. + * @param {Vec3} tangent - Tangent vector. + * @returns {Vec3} - */ static orthoNormalize(normal, tangent) { normal = normal.normal(); @@ -284,9 +284,9 @@ export class Vec3 { /** * Returns vector components division product one to another. * @static - * @param {og.Vec3} a - First vector. - * @param {og.Vec3} b - Second vector. - * @returns {og.Vec3} - + * @param {Vec3} a - First vector. + * @param {Vec3} b - Second vector. + * @returns {Vec3} - */ static div(a, b) { var res = new Vec3(a.x, a.y, a.z); @@ -297,7 +297,7 @@ export class Vec3 { /** * Converts to 4d vector, Fourth value is 1.0. * @public - * @returns {og.Vec4} - + * @returns {Vec4} - */ toVec4() { return new Vec4(this.x, this.y, this.z, 1.0); @@ -306,7 +306,7 @@ export class Vec3 { /** * Returns clone vector. * @public - * @returns {og.Vec3} - + * @returns {Vec3} - */ clone() { return new Vec3(this.x, this.y, this.z); @@ -333,8 +333,8 @@ export class Vec3 { /** * Get projection of the first vector to the second. * @static - * @param {og.Vec3} a - Project vector. - * @returns {og.Vec3} - + * @param {Vec3} a - Project vector. + * @returns {Vec3} - */ projToVec(a) { return a.scaleTo(a.dot(this) / a.dot(a)); @@ -343,7 +343,7 @@ export class Vec3 { /** * Compares with vector. Returns true if it equals another. * @public - * @param {og.Vec3} p - Vector to compare. + * @param {Vec3} p - Vector to compare. * @returns {boolean} - */ equal(p) { @@ -352,8 +352,8 @@ export class Vec3 { /** * Copy input vector's values. - * @param {og.Vec3} point3 - Vector to copy. - * @returns {og.Vec3} - + * @param {Vec3} point3 - Vector to copy. + * @returns {Vec3} - */ copy(point3) { this.x = point3.x; @@ -383,7 +383,7 @@ export class Vec3 { /** * Converts vector's values to a quaternion object. * @public - * @returns {og.Quat} - + * @returns {Quat} - */ getQuat() { return new Quat(this.x, this.y, this.z); @@ -392,8 +392,8 @@ export class Vec3 { /** * Adds vector to the current. * @public - * @param {og.Vec3} point3 - Point to add. - * @returns {og.Vec3} - + * @param {Vec3} point3 - Point to add. + * @returns {Vec3} - */ addA(point3) { this.x += point3.x; @@ -405,8 +405,8 @@ export class Vec3 { /** * Gets two vectors summarization. * @public - * @param {og.Vec3} point3 - Vector to add. - * @returns {og.Vec3} Returns a sum vector. + * @param {Vec3} point3 - Vector to add. + * @returns {Vec3} Returns a sum vector. */ add(point3) { return new Vec3(this.x + point3.x, this.y + point3.y, this.z + point3.z); @@ -415,8 +415,8 @@ export class Vec3 { /** * Subtract vector from the current. * @public - * @param {og.Vec3} point3 - Subtract vector. - * @returns {og.Vec3} - + * @param {Vec3} point3 - Subtract vector. + * @returns {Vec3} - */ subA(point3) { this.x -= point3.x; @@ -428,8 +428,8 @@ export class Vec3 { /** * Gets vector subtraction. * @public - * @param {og.Vec3} point3 - Subtract vector. - * @return {og.Vec3} Returns new instance of a subtraction + * @param {Vec3} point3 - Subtract vector. + * @return {Vec3} Returns new instance of a subtraction */ sub(point3) { return new Vec3(this.x - point3.x, this.y - point3.y, this.z - point3.z); @@ -439,7 +439,7 @@ export class Vec3 { * Scale current vector. * @public * @param {number} scale - Scale value. - * @returns {og.Vec3} - + * @returns {Vec3} - */ scale(scale) { this.x *= scale; @@ -452,7 +452,7 @@ export class Vec3 { * Scale current vector to another instance. * @public * @param {number} scale - Scale value. - * @returns {og.Vec3} - + * @returns {Vec3} - */ scaleTo(scale) { return new Vec3(this.x * scale, this.y * scale, this.z * scale); @@ -461,8 +461,8 @@ export class Vec3 { /** * Multiply current vector object to another and store result in the current instance. * @public - * @param {og.Vec3} vec - Multiply vector. - * @returns {og.Vec3} - + * @param {Vec3} vec - Multiply vector. + * @returns {Vec3} - */ mulA(vec) { this.x *= vec.x; @@ -474,8 +474,8 @@ export class Vec3 { /** * Multiply current vector object to another and returns new vector instance. * @public - * @param {og.Vec3} vec - Multiply vector. - * @returns {og.Vec3} - + * @param {Vec3} vec - Multiply vector. + * @returns {Vec3} - */ mul(vec) { return new Vec3(this.x * vec.x, this.y * vec.y, this.z * vec.z); @@ -484,8 +484,8 @@ export class Vec3 { /** * Divide current vector's components to another. Results stores in the current vector object. * @public - * @param {og.Vec3} vec - Div vector. - * @returns {og.Vec3} - + * @param {Vec3} vec - Div vector. + * @returns {Vec3} - */ divA(vec) { this.x /= vec.x; @@ -497,8 +497,8 @@ export class Vec3 { /** * Divide current vector's components to another and returns new vector instance. * @public - * @param {og.Vec3} vec - Div vector. - * @returns {og.Vec3} - + * @param {Vec3} vec - Div vector. + * @returns {Vec3} - */ div(vec) { return new Vec3(this.x / vec.x, this.y / vec.y, this.z / vec.z); @@ -507,7 +507,7 @@ export class Vec3 { /** * Gets vectors dot production. * @public - * @param {og.Vec3} point3 - Another vector. + * @param {Vec3} point3 - Another vector. * @returns {number} - */ dot(point3) { @@ -527,8 +527,8 @@ export class Vec3 { /** * Gets vectors cross production. * @public - * @param {og.Vec3} point3 - Another vector. - * @returns {og.Vec3} - + * @param {Vec3} point3 - Another vector. + * @returns {Vec3} - */ cross(point3) { return new Vec3( @@ -541,7 +541,7 @@ export class Vec3 { /** * Sets vector to zero. * @public - * @returns {og.Vec3} - + * @returns {Vec3} - */ clear() { this.x = this.y = this.z = 0; @@ -551,7 +551,7 @@ export class Vec3 { /** * Returns normalized vector. * @public - * @returns {og.Vec3} - + * @returns {Vec3} - */ getNormal() { var res = new Vec3(); @@ -570,7 +570,7 @@ export class Vec3 { * Returns normalized vector. * @deprecated * @public - * @returns {og.Vec3} - + * @returns {Vec3} - */ normal() { var res = new Vec3(); @@ -588,7 +588,7 @@ export class Vec3 { /** * Returns normalized negate vector. * @public - * @returns {og.Vec3} - + * @returns {Vec3} - */ normalNegate() { var res = new Vec3(); @@ -606,7 +606,7 @@ export class Vec3 { /** * Returns normalized negate scale vector. * @public - * @returns {og.Vec3} - + * @returns {Vec3} - */ normalNegateScale(scale) { var res = new Vec3(); @@ -624,7 +624,7 @@ export class Vec3 { /** * Returns normalized scale vector. * @public - * @returns {og.Vec3} - + * @returns {Vec3} - */ normalScale(scale) { var res = new Vec3(); @@ -642,7 +642,7 @@ export class Vec3 { /** * Normalize current vector. * @public - * @returns {og.Vec3} - + * @returns {Vec3} - */ normalize() { var length = 1.0 / this.length(); @@ -676,7 +676,7 @@ export class Vec3 { /** * Gets distance to point. * @public - * @param {og.Vec3} point3 - Distant point. + * @param {Vec3} point3 - Distant point. * @returns {number} - */ distance(point3) { @@ -689,7 +689,7 @@ export class Vec3 { * @param {number} x - Value X. * @param {number} y - Value Y. * @param {number} z - Value Z. - * @returns {og.Vec3} - + * @returns {Vec3} - */ set(x, y, z) { this.x = x; @@ -701,7 +701,7 @@ export class Vec3 { /** * Negate current vector. * @public - * @returns {og.Vec3} - + * @returns {Vec3} - */ negate() { this.x = -this.x; @@ -713,7 +713,7 @@ export class Vec3 { /** * Negate current vector to another instance. * @public - * @returns {og.Vec3} - + * @returns {Vec3} - */ negateTo() { return new Vec3(-this.x, -this.y, -this.z); @@ -722,9 +722,9 @@ export class Vec3 { /** * Gets projected point coordinates of the current vector on the ray. * @public - * @param {og.Vec3} pos - Ray position. - * @param {og.Vec3} direction - Ray direction. - * @returns {og.Vec3} - + * @param {Vec3} pos - Ray position. + * @param {Vec3} direction - Ray direction. + * @returns {Vec3} - */ projToRay(pos, direction) { var v = Vec3.proj_b_to_a(Vec3.sub(this, pos), direction); @@ -735,7 +735,7 @@ export class Vec3 { /** * Gets angle between two vectors. * @public - * @param {og.Vec3} a - Another vector. + * @param {Vec3} a - Another vector. * @returns {number} - */ angle(a) { @@ -745,9 +745,9 @@ export class Vec3 { /** * Returns two vectors linear interpolation. * @public - * @param {og.Vec3} v2 - End vector. + * @param {Vec3} v2 - End vector. * @param {number} l - Interpolate value. - * @returns {og.Vec3} - + * @returns {Vec3} - */ lerp(v2, l) { return new Vec3(this.x + (v2.x - this.x) * l, this.y + (v2.y - this.y) * l, this.z + (v2.z - this.z) * l); @@ -756,9 +756,9 @@ export class Vec3 { /** * Returns vector interpolation by v(t) = v1 * t + v2 * (1 - t) * @public - * @param {og.Vec3} v2 - End vector. + * @param {Vec3} v2 - End vector. * @param {number} t - Interpolate value. - * @returns {og.Vec3} - + * @returns {Vec3} - */ smerp(v2, t) { var one_d = 1 - t; @@ -773,9 +773,9 @@ export class Vec3 { * the vectors are treated as directions rather than points in space. The direction of the returned vector is interpolated * by the angle and its magnitude is interpolated between the magnitudes of from and to. * @public - * @param {og.Vec3} v2 - + * @param {Vec3} v2 - * @param {number} t - The parameter t is clamped to the range [0, 1]. - * @returns {og.Vec3} - + * @returns {Vec3} - */ slerp(v2, t) { var res = new Vec3(); @@ -857,7 +857,7 @@ export class Vec3 { * @param {number} [x] - First cvalue. * @param {number} [y] - Second value. * @param {number} [z] - Third value. - * @returns {og.Vec3} - + * @returns {Vec3} - */ export function vec3(x, y, z) { return new Vec3(x, y, z); diff --git a/src/og/math/Vec4.js b/src/og/math/Vec4.js index f33a914d..e078e70b 100644 --- a/src/og/math/Vec4.js +++ b/src/og/math/Vec4.js @@ -46,7 +46,7 @@ export class Vec4 { /** * Identity vector [0,0,0,1]. * @const - * @type {og.math.Vec4} + * @type {math.Vec4} */ static get identity() { return new Vec4(0, 0, 0, 1) } @@ -54,7 +54,7 @@ export class Vec4 { * Creates 4d vector from array. * @function * @param {Array.} - (exactly 4 entries) - * @returns {og.math.Vec4} + * @returns {math.Vec4} */ static fromVec(arr) { return new Vec4(arr[0], arr[1], arr[2], arr[3]); @@ -63,7 +63,7 @@ export class Vec4 { /** * Converts to 3d vector, without fourth value. * @public - * @returns {og.Vec3} + * @returns {Vec3} */ toVec3() { return new Vec3(this.x, this.y, this.z); @@ -72,7 +72,7 @@ export class Vec4 { /** * Returns clone vector. * @public - * @returns {og.math.Vec4} + * @returns {math.Vec4} */ clone(v) { return new Vec4(this.x, this.y, this.z, this.w); @@ -81,7 +81,7 @@ export class Vec4 { /** * Compares with vector. Returns true if it equals another. * @public - * @param {og.math.Vec4} p - Vector to compare. + * @param {math.Vec4} p - Vector to compare. * @returns {boolean} */ equal(v) { @@ -90,8 +90,8 @@ export class Vec4 { /** * Copy input vector's values. - * @param {og.math.Vec4} v - Vector to copy. - * @returns {og.math.Vec4} + * @param {math.Vec4} v - Vector to copy. + * @returns {math.Vec4} */ copy(v) { this.x = v.x; @@ -127,7 +127,7 @@ export class Vec4 { * @param {number} y - Value Y. * @param {number} z - Value Z. * @param {number} w - Value W. - * @returns {og.math.Vec4} + * @returns {math.Vec4} */ set(x, y, z, w) { this.x = x; @@ -140,8 +140,8 @@ export class Vec4 { /** * Adds vector to the current. * @public - * @param {og.math.Vec4} - * @returns {og.math.Vec4} + * @param {math.Vec4} + * @returns {math.Vec4} */ addA(v) { this.x += v.x; @@ -154,8 +154,8 @@ export class Vec4 { /** * Subtract vector from the current. * @public - * @param {og.math.Vec4} v - Subtract vector. - * @returns {og.math.Vec4} + * @param {math.Vec4} v - Subtract vector. + * @returns {math.Vec4} */ subA(v) { this.x -= v.x; @@ -169,7 +169,7 @@ export class Vec4 { * Scale current vector. * @public * @param {number} scale - Scale value. - * @returns {og.math.Vec4} + * @returns {math.Vec4} */ scale(scale) { this.x *= scale; @@ -182,7 +182,7 @@ export class Vec4 { /** * Makes vector affinity. Thereby fourh component becomes to 1.0. * @public - * @returns {og.math.Vec4} + * @returns {math.Vec4} */ affinity() { var iw = 1 / this.w; @@ -197,7 +197,7 @@ export class Vec4 { * Scale current vector to another instance. * @public * @param {number} scale - Scale value. - * @returns {og.Vec3} + * @returns {Vec3} */ scaleTo(scale) { return new Vec4(this.x * scale, this.y * scale, this.z * scale, this.w * scale); @@ -206,7 +206,7 @@ export class Vec4 { /** * Vector's edge function that returns vector where each component is 0.0 if it's smaller then edge and otherwise 1.0. * @public - * @returns {og.math.Vec4} + * @returns {math.Vec4} */ getStep(edge) { return new Vec4( @@ -220,7 +220,7 @@ export class Vec4 { /** * The vector fract function returns the vector of fractional parts of each value, i.e. x minus floor(x). * @public - * @returns {og.math.Vec4} + * @returns {math.Vec4} */ getFrac(v) { return new Vec4( @@ -234,7 +234,7 @@ export class Vec4 { /** * Gets vectors dot production. * @public - * @param {og.math.Vec4} v - Another vector. + * @param {math.Vec4} v - Another vector. * @returns {number} - Dot product. */ dot(v) { @@ -258,7 +258,7 @@ export class Vec4 { * @param {number} [y] - Second value. * @param {number} [z] - Third value. * @param {number} [w] - Fourth value. - * @returns {og.math.Vec4} + * @returns {math.Vec4} */ export function vec4(x, y, z, w) { return new og.math.Vec4(x, y, z, w); diff --git a/src/og/math/coder.js b/src/og/math/coder.js index 20c42ea3..b9b73173 100644 --- a/src/og/math/coder.js +++ b/src/og/math/coder.js @@ -11,7 +11,7 @@ import { Vec4 } from './Vec4.js'; * Encode 32 bit float value to the RGBA vector. * @function * @param {number} v - 32 bit float value. - * @returns {og.math.Vec4} - RGBA vector value. + * @returns {math.Vec4} - RGBA vector value. */ export function encodeFloatToRGBA(v) { var enc = new Vec4(1.0 * v % 1, 255.0 * v % 1, 65025.0 * v % 1, 160581375.0 * v % 1); @@ -22,7 +22,7 @@ export function encodeFloatToRGBA(v) { /** * Decode RGBA vector to 32 bit float value. * @function - * @param {og.Vec4} rgba - RGBA encoded 32 bit float value. + * @param {Vec4} rgba - RGBA encoded 32 bit float value. * @returns {number} - Float value. */ export function decodeFloatFromRGBA(rgba) { @@ -35,7 +35,7 @@ export function decodeFloatFromRGBA(rgba) { /** * Decode RGBA vector to 32 bit float value. * @function - * @param {og.Vec4} rgba - RGBA encoded 32 bit float value. + * @param {Vec4} rgba - RGBA encoded 32 bit float value. * @returns {number} - Float value. */ export function decodeFloatFromRGBAArr(arr, use32) { diff --git a/src/og/proj/EPSG3857.js b/src/og/proj/EPSG3857.js index a4d2401d..9c8fc94d 100644 --- a/src/og/proj/EPSG3857.js +++ b/src/og/proj/EPSG3857.js @@ -8,6 +8,6 @@ import { Units, Proj } from './Proj.js'; /** * EPSG:3857 projection object. - * @type {og.Proj} + * @type {Proj} */ export const EPSG3857 = new Proj({ code: "epsg:3857", units: Units.METERS }); \ No newline at end of file diff --git a/src/og/proj/EPSG4326.js b/src/og/proj/EPSG4326.js index c80aad59..c3e1da6d 100644 --- a/src/og/proj/EPSG4326.js +++ b/src/og/proj/EPSG4326.js @@ -8,6 +8,6 @@ import { Units, Proj } from './Proj.js'; /** * EPSG:4326 projection object. - * @type {og.Proj} + * @type {Proj} */ export const EPSG4326 = new Proj({ code: "epsg:4326", units: Units.DEGREES }); \ No newline at end of file diff --git a/src/og/proj/Proj.js b/src/og/proj/Proj.js index 6fee52fa..e9730cb1 100644 --- a/src/og/proj/Proj.js +++ b/src/og/proj/Proj.js @@ -39,7 +39,7 @@ class Proj { /** * @public - * @type {og.proj.Units} + * @type {proj.Units} */ this.units = /** @type {Units} */ (options.units); @@ -54,7 +54,7 @@ class Proj { /** * Compare projections. * @public - * @param {og.Proj} proj - Projetion object. + * @param {Proj} proj - Projetion object. * @returns {boolean} */ equal(proj) { diff --git a/src/og/quadTree/Node.js b/src/og/quadTree/Node.js index 7cd3d0cd..3b5a600f 100644 --- a/src/og/quadTree/Node.js +++ b/src/og/quadTree/Node.js @@ -55,13 +55,13 @@ let BOUNDS = { /** * Quad tree planet segment node. * @constructor - * @param {og.planetSegment.Segment|og.planetSegment.SegmentLonLat} segmentPrototype - Planet segment node constructor. - * @param {og.scene.RenderNode} planet - Planet render node. + * @param {planetSegment.Segment|og.planetSegment.SegmentLonLat} segmentPrototype - Planet segment node constructor. + * @param {scene.RenderNode} planet - Planet render node. * @param {number} partId - NorthEast, SouthWest etc. - * @param {og.quadTree.Node} parent - Parent of this node. + * @param {quadTree.Node} parent - Parent of this node. * @param {number} id - Tree node identifier (id * 4 + 1); * @param {number} tileZoom - Deep index of the quad tree. - * @param {og.Extent} extent - Planet segment extent. + * @param {Extent} extent - Planet segment extent. */ class Node { @@ -173,7 +173,7 @@ class Node { * Returns the same deep existent neighbour node. * @public * @param {Number} side - Neighbour side index e.g. og.quadTree.N, og.quadTree.W etc. - * @returns {og.quadTree.Node} - + * @returns {quadTree.Node} - */ getEqualNeighbor(side) { var pn = this; diff --git a/src/og/renderer/Renderer.js b/src/og/renderer/Renderer.js index f90a75cc..93c5b37d 100644 --- a/src/og/renderer/Renderer.js +++ b/src/og/renderer/Renderer.js @@ -24,7 +24,7 @@ let __depthCallbackCounter__ = 0; /** * Represents high level WebGL context interface that starts WebGL handler working in real time. * @class - * @param {og.webgl.Handler} handler - WebGL handler context. + * @param {webgl.Handler} handler - WebGL handler context. * @param {Object} [params] - Renderer parameters: * @fires og.RendererEvents#draw * @fires og.RendererEvents#resize @@ -69,7 +69,7 @@ class Renderer { /** * WebGL handler context. * @public - * @type {og.webgl.Handler} + * @type {webgl.Handler} */ this.handler = handler; @@ -86,7 +86,7 @@ class Renderer { /** * Render nodes drawing queue. * @private - * @type {Array.} + * @type {Array.} */ this._renderNodesArr = []; @@ -100,14 +100,14 @@ class Renderer { /** * Current active camera. * @public - * @type {og.Camera} + * @type {Camera} */ this.activeCamera = null; /** * Renderer events. Represents interface for setting events like mousemove, draw, keypress etc. * @public - * @type {og.RendererEvents} + * @type {RendererEvents} */ this.events = new RendererEvents(this); @@ -140,20 +140,20 @@ class Renderer { /** * Color picking objects rendering queue. - * @type {Array.} + * @type {Array.} */ this._pickingCallbacks = []; /** * Picking objects(labels and billboards) framebuffer. * @public - * @type {og.webgl.Framebuffer} + * @type {webgl.Framebuffer} */ this.pickingFramebuffer = null; /** * Depth objects rendering queue. - * @type {Array.} + * @type {Array.} */ this._depthCallbacks = []; @@ -193,14 +193,14 @@ class Renderer { /** * Texture atlas for the billboards images. One atlas per node. * @protected - * @type {og.utils.TextureAtlas} + * @type {utils.TextureAtlas} */ this.billboardsTextureAtlas = new TextureAtlas(); /** * Texture font atlas for the font families and styles. One atlas per node. * @public - * @type {og.utils.FontAtlas} + * @type {utils.FontAtlas} */ this.fontAtlas = new FontAtlas(); @@ -249,7 +249,7 @@ class Renderer { /** * Adds picking rendering callback function. * @param {object} sender - Callback context. - * @param {og.Renderer~pickingCallback} callback - Rendering callback. + * @param {Renderer~pickingCallback} callback - Rendering callback. * @returns {Number} Handler id */ addPickingCallback(sender, callback) { @@ -346,7 +346,7 @@ class Renderer { /** * Get center of the screen * @public - * @returns {og.math.Vec2} - + * @returns {math.Vec2} - */ getCenter() { var cnv = this.handler.canvas; @@ -355,7 +355,7 @@ class Renderer { /** * Add the given control to the renderer. - * @param {og.control.Control} control - Control. + * @param {control.Control} control - Control. */ addControl(control) { control.addTo(this); @@ -363,7 +363,7 @@ class Renderer { /** * Add the given controls array to the planet node. - * @param {Array.} cArr - Control array. + * @param {Array.} cArr - Control array. */ addControls(cArr) { for (var i = 0; i < cArr.length; i++) { @@ -373,7 +373,7 @@ class Renderer { /** * Remove control from the renderer. - * @param {og.control.Control} control - Control. + * @param {control.Control} control - Control. */ removeControl(control) { control.remove(); @@ -564,7 +564,7 @@ class Renderer { /** * Adds render node to the renderer. * @public - * @param {og.scene.RenderNode} renderNode - Render node. + * @param {scene.RenderNode} renderNode - Render node. */ addNode(renderNode) { if (!this.renderNodes[renderNode.name]) { @@ -579,7 +579,7 @@ class Renderer { /** * Adds render node to the renderer before specific node. * @public - * @param {og.scene.RenderNode} renderNode - Render node. + * @param {scene.RenderNode} renderNode - Render node. */ addNodeBefore(renderNode, renderNodeBefore) { if (!this.renderNodes[renderNode.name]) { @@ -600,7 +600,7 @@ class Renderer { /** * Adds render nodes array to the renderer. * @public - * @param {Array.} nodesArr - Render nodes array. + * @param {Array.} nodesArr - Render nodes array. */ addNodes(nodesArr) { for (var i = 0; i < nodesArr.length; i++) { diff --git a/src/og/renderer/RendererEvents.js b/src/og/renderer/RendererEvents.js index 6219a428..f7174e28 100644 --- a/src/og/renderer/RendererEvents.js +++ b/src/og/renderer/RendererEvents.js @@ -19,7 +19,7 @@ const MB_M = 0b0100; /** * Renderer events handler. * @class - * @param {og.Renderer} renderer - Renderer object, events that works for. + * @param {Renderer} renderer - Renderer object, events that works for. */ class RendererEvents extends Events { constructor(renderer) { @@ -28,28 +28,28 @@ class RendererEvents extends Events { /** * Assigned renderer. * @public - * @type {og.Renderer} + * @type {Renderer} */ this.renderer = renderer; /** * Low level touch events handler. * @private - * @type {og.input.TouchHandler} + * @type {input.TouchHandler} */ this._touchHandler = new TouchHandler(renderer.handler.canvas); /** * Low level mouse events handler. * @private - * @type {og.input.MouseHandler} + * @type {input.MouseHandler} */ this._mouseHandler = new MouseHandler(renderer.handler.canvas); /** * Low level keyboard events handler. * @private - * @type {og.input.KeyboardHandler} + * @type {input.KeyboardHandler} */ this._keyboardHandler = new KeyboardHandler(); diff --git a/src/og/scene/BaseNode.js b/src/og/scene/BaseNode.js index 414a9387..16c1da29 100644 --- a/src/og/scene/BaseNode.js +++ b/src/og/scene/BaseNode.js @@ -22,7 +22,7 @@ class BaseNode { /** * Top scene tree node pointer. * @public - * @type {og.RenderNode} + * @type {RenderNode} */ this.topNode = this; @@ -32,14 +32,14 @@ class BaseNode { /** * Children nodes. * @public - * @type {Array.} + * @type {Array.} */ this.childNodes = []; /** * Parent node pointer. * @public - * @type {og.RenderNode} + * @type {RenderNode} */ this.parentNode = null; @@ -60,7 +60,7 @@ class BaseNode { /** * Adds node to the current hierarchy. * @public - * @type {og.BaseNode} + * @type {BaseNode} */ addNode(node) { if (this.parentNode == null) { @@ -89,7 +89,7 @@ class BaseNode { * Gets node by name in the current. * @public * @param {string} name - Node name. - * @return {og.RenderNode} Node object in the current node. + * @return {RenderNode} Node object in the current node. */ getNodeByName(name) { return this._dictionary[name]; diff --git a/src/og/scene/Planet.js b/src/og/scene/Planet.js index d7b10a3b..b3d80b0d 100644 --- a/src/og/scene/Planet.js +++ b/src/og/scene/Planet.js @@ -91,7 +91,7 @@ const EVENT_NAMES = [ * @class * @extends {RenderNode} * @param {string} name - Planet name(Earth by default) - * @param {og.Ellipsoid} ellipsoid - Planet ellipsoid(WGS84 by default) + * @param {Ellipsoid} ellipsoid - Planet ellipsoid(WGS84 by default) * @param {Number} [maxGridSize=128] - Segment maximal grid size * @fires og.scene.Planet#draw * @fires og.scene.Planet#layeradd @@ -106,7 +106,7 @@ export class Planet extends RenderNode { /** * @public - * @type {og.Ellipsoid} + * @type {Ellipsoid} */ this.ellipsoid = options.ellipsoid || wgs84; @@ -126,21 +126,21 @@ export class Planet extends RenderNode { /** * All layers array. * @public - * @type {Array.} + * @type {Array.} */ this.layers = []; /** * Current visible imagery tile layers array. * @public - * @type {Array.} + * @type {Array.} */ this.visibleTileLayers = []; /** * Current visible vector layers array. * @protected - * @type {Array.} + * @type {Array.} */ this.visibleVectorLayers = []; @@ -149,28 +149,28 @@ export class Planet extends RenderNode { /** * Vector layers visible nodes with collections. * @protected - * @type {Array.} + * @type {Array.} */ this._frustumEntityCollections = []; /** * There is only one base layer on the globe when layer.isBaseLayer is true. * @public - * @type {og.Layer} + * @type {Layer} */ this.baseLayer = null; /** * Terrain provider. * @public - * @type {og.terrain.Terrain} + * @type {terrain.Terrain} */ this.terrain = null; /** * Camera is this.renderer.activeCamera pointer. * @public - * @type {og.PlanetCamera} + * @type {PlanetCamera} */ this.camera = null; @@ -180,7 +180,7 @@ export class Planet extends RenderNode { /** * Screen mouse pointer projected to planet cartesian position. * @public - * @type {og.Vec3} + * @type {Vec3} */ this.mousePositionOnEarth = new Vec3(); @@ -212,7 +212,7 @@ export class Planet extends RenderNode { /** * Planet's segments collected for rendering frame. * @protected - * @type {og.quadTree.Node} + * @type {quadTree.Node} */ this._renderedNodes = []; this._renderedNodesInFrustum = []; @@ -220,42 +220,42 @@ export class Planet extends RenderNode { /** * Created nodes cache * @protected - * @type {og.quadTree.Node} + * @type {quadTree.Node} */ this._quadTreeNodesCacheMerc = {}; /** * Current visible mercator segments tree nodes array. * @protected - * @type {og.quadTree.Node} + * @type {quadTree.Node} */ this._visibleNodes = {}; /** * Current visible north pole nodes tree nodes array. * @protected - * @type {og.quadTree.Node} + * @type {quadTree.Node} */ this._visibleNodesNorth = {}; /** * Current visible south pole nodes tree nodes array. * @protected - * @type {og.quadTree.Node} + * @type {quadTree.Node} */ this._visibleNodesSouth = {}; /** * Layers activity lock. * @public - * @type {og.idle.Lock} + * @type {idle.Lock} */ this.layerLock = new Lock(); /** * Terrain providers activity lock. * @public - * @type {og.idle.Lock} + * @type {idle.Lock} */ this.terrainLock = new Lock(); @@ -298,21 +298,21 @@ export class Planet extends RenderNode { /** * Mercator grid tree. * @protected - * @type {og.quadTree.Node} + * @type {quadTree.Node} */ this._quadTree = null; /** * North grid tree. * @protected - * @type {og.quadTree.Node} + * @type {quadTree.Node} */ this._quadTreeNorth = null; /** * South grid tree. * @protected - * @type {og.quadTree.Node} + * @type {quadTree.Node} */ this._quadTreeSouth = null; @@ -378,7 +378,7 @@ export class Planet extends RenderNode { /** * GeoImage creator. * @protected - * @type{og.utils.GeoImageCreator} + * @type{utils.GeoImageCreator} */ this._geoImageCreator = null; @@ -415,7 +415,7 @@ export class Planet extends RenderNode { /** * Add the given control to the renderer of the planet scene. - * @param {og.control.Control} control - Control. + * @param {control.Control} control - Control. */ addControl(control) { control.planet = this; @@ -431,7 +431,7 @@ export class Planet extends RenderNode { /** * Add the given controls array to the renderer of the planet. - * @param {Array.} cArr - Control array. + * @param {Array.} cArr - Control array. */ addControls(cArr) { for (var i = 0; i < cArr.length; i++) { @@ -443,7 +443,7 @@ export class Planet extends RenderNode { * Return layer by it name * @param {string} name - Name of the layer. og.Layer.prototype.name * @public - * @returns {og.Layer} - + * @returns {Layer} - */ getLayerByName(name) { var i = this.layers.length; @@ -456,7 +456,7 @@ export class Planet extends RenderNode { /** * Adds the given layer to the planet. - * @param {og.Layer} layer - Layer object. + * @param {Layer} layer - Layer object. * @public */ addLayer(layer) { @@ -465,7 +465,7 @@ export class Planet extends RenderNode { /** * Dispatch layer visibility changing event. - * @param {og.Layer} layer - Changed layer. + * @param {Layer} layer - Changed layer. * @protected */ _onLayerVisibilityChanged(layer) { @@ -474,7 +474,7 @@ export class Planet extends RenderNode { /** * Adds the given layers array to the planet. - * @param {Array.} layers - Layers array. + * @param {Array.} layers - Layers array. * @public */ addLayers(layers) { @@ -485,8 +485,8 @@ export class Planet extends RenderNode { /** * Removes the given layer from the planet. - * @param {og.Layer} layer - Layer to remove. - * @return {og.Layer|undefined} The removed layer or undefined if the layer was not found. + * @param {Layer} layer - Layer to remove. + * @return {Layer|undefined} The removed layer or undefined if the layer was not found. * @public */ removeLayer(layer) { @@ -496,7 +496,7 @@ export class Planet extends RenderNode { /** * * @protected - * @param {og.Layer} layer - Material layer. + * @param {Layer} layer - Material layer. */ _clearLayerMaterial(layer) { var lid = layer._id; @@ -511,7 +511,7 @@ export class Planet extends RenderNode { /** * Get the collection of layers associated with this planet. - * @return {Array.} Layers array. + * @return {Array.} Layers array. * @public */ getLayers() { @@ -520,7 +520,7 @@ export class Planet extends RenderNode { /** * Sets base layer coverage to the planet. - * @param {og.Layer} layer - Layer object. + * @param {Layer} layer - Layer object. * @public */ setBaseLayer(layer) { @@ -560,7 +560,7 @@ export class Planet extends RenderNode { /** * Sets terrain provider * @public - * @param {og.terrain.Terrain} terrain - Terrain provider. + * @param {terrain.Terrain} terrain - Terrain provider. */ setTerrain(terrain) { this._renderCompletedActivated = false; @@ -1457,8 +1457,8 @@ export class Planet extends RenderNode { * Returns ray vector hit ellipsoid coordinates. * If the ray doesn't hit ellipsoit returns null. * @public - * @param {og.Ray} ray - Ray 3d. - * @returns {og.Vec3} - + * @param {Ray} ray - Ray 3d. + * @returns {Vec3} - */ getRayIntersectionEllipsoid(ray) { return this.ellipsoid.hitRay(ray.origin, ray.direction); @@ -1467,8 +1467,8 @@ export class Planet extends RenderNode { /** * Returns 2d screen coordanates projection point to the planet ellipsoid 3d coordinates. * @public - * @param {og.math.Pixel} px - 2D sreen coordinates. - * @returns {og.Vec3} - + * @param {math.Pixel} px - 2D sreen coordinates. + * @returns {Vec3} - */ getCartesianFromPixelEllipsoid(px) { var cam = this.renderer.activeCamera; @@ -1478,7 +1478,7 @@ export class Planet extends RenderNode { /** * Returns 2d screen coordanates projection point to the planet ellipsoid geographical coordinates. * @public - * @param {og.math.Pixel} px - 2D screen coordinates. + * @param {math.Pixel} px - 2D screen coordinates. * @returns {LonLat} - */ getLonLatFromPixelEllipsoid(px) { @@ -1494,7 +1494,7 @@ export class Planet extends RenderNode { * position or null if mouse cursor is outside the planet. * @public * @param {Boolean} [force=false] - Force framebuffer rendering. - * @returns {og.Vec3} - + * @returns {Vec3} - */ getCartesianFromMouseTerrain(force) { var ms = this.renderer.events.mouseState; @@ -1509,9 +1509,9 @@ export class Planet extends RenderNode { * Returns 3d cartesian coordinates on the relief planet by 2d screen coordinates. * position or null if input coordinates is outside the planet. * @public - * @param {og.Vec2} px - Pixel screen 2d coordinates. + * @param {Vec2} px - Pixel screen 2d coordinates. * @param {Boolean} [force=false] - Force framebuffer rendering. - * @returns {og.Vec3} - + * @returns {Vec3} - */ getCartesianFromPixelTerrain(px, force) { var distance = this.getDistanceFromPixel(px, force); @@ -1526,7 +1526,7 @@ export class Planet extends RenderNode { * Returns geographical coordinates on the relief planet by 2d screen coordinates. * position or null if input coordinates is outside the planet. * @public - * @param {og.Vec2} px - Pixel screen 2d coordinates. + * @param {Vec2} px - Pixel screen 2d coordinates. * @param {Boolean} [force=false] - Force framebuffer rendering. * @returns {LonLat} - */ @@ -1541,8 +1541,8 @@ export class Planet extends RenderNode { /** * Returns projected 2d screen coordinates by 3d cartesian coordiantes. * @public - * @param {og.Vec3} coords - Cartesian coordinates. - * @returns {og.Vec2} - + * @param {Vec3} coords - Cartesian coordinates. + * @returns {Vec2} - */ getPixelFromCartesian(coords) { return this.renderer.activeCamera.project(coords); @@ -1552,7 +1552,7 @@ export class Planet extends RenderNode { * Returns projected 2d screen coordinates by geographical coordinates. * @public * @param {LonLat} lonlat - Geographical coordinates. - * @returns {og.Vec2} - + * @returns {Vec2} - */ getPixelFromLonLat(lonlat) { var coords = this.ellipsoid.lonLatToCartesian(lonlat); @@ -1566,7 +1566,7 @@ export class Planet extends RenderNode { * Returns distance from active camera to the the planet ellipsoid * coordiantes unprojected by 2d screen coordiantes, or null if screen coordinates outside the planet. * @public - * @param {og.Vec2} px - Screen coordinates. + * @param {Vec2} px - Screen coordinates. * @returns {number} - */ getDistanceFromPixelEllipsoid(px) { @@ -1580,7 +1580,7 @@ export class Planet extends RenderNode { * If screen coordinates inside the planet but relief is not exists in the * point than function returns distance to the planet ellipsoid. * @public - * @param {og.Vec2} px - Screen coordinates. + * @param {Vec2} px - Screen coordinates. * @param {Boolean} [force=false] - Force framebuffer rendering. * @returns {number} - */ @@ -1624,7 +1624,7 @@ export class Planet extends RenderNode { /** * Sets camera to the planet geographical extent. * @public - * @param {og.Extent} extent - Geographical extent. + * @param {Extent} extent - Geographical extent. */ viewExtent(extent) { this.renderer.activeCamera.viewExtent(extent); @@ -1648,7 +1648,7 @@ export class Planet extends RenderNode { /** * Gets current viewing geographical extent. * @public - * @returns {og.Extent} - + * @returns {Extent} - */ getViewExtent() { return this._viewExtent; @@ -1680,7 +1680,7 @@ export class Planet extends RenderNode { * Sets camera to the planet geographical position. * @public * @param {LonLat} lonlat - New geographical position. - * @param {og.Vec3} [up] - Camera UP vector. + * @param {Vec3} [up] - Camera UP vector. */ viewLonLat(lonlat, up) { this.renderer.activeCamera.setLonLat(lonlat, up); @@ -1689,9 +1689,9 @@ export class Planet extends RenderNode { /** * Fly camera to the planet geographical extent. * @public - * @param {og.Extent} extent - Geographical extent. + * @param {Extent} extent - Geographical extent. * @param {Number} [height] - Height on the end of the flight route. - * @param {og.Vec3} [up] - Camera UP vector on the end of a flying. + * @param {Vec3} [up] - Camera UP vector on the end of a flying. * @param {Number} [ampl] - Altitude amplitude factor. * @param {cameraCallback} [startCallback] - Callback that calls after flying when flying is finished. * @param {cameraCallback} [completeCallback] - Callback that calls befor the flying begins. @@ -1710,9 +1710,9 @@ export class Planet extends RenderNode { /** * Fly camera to the new point. * @public - * @param {og.Vec3} cartesian - Fly coordiantes. - * @param {og.Vec3} [look] - Camera "look at" point. - * @param {og.Vec3} [up] - Camera UP vector on the end of a flying. + * @param {Vec3} cartesian - Fly coordiantes. + * @param {Vec3} [look] - Camera "look at" point. + * @param {Vec3} [up] - Camera UP vector on the end of a flying. * @param {Number} [ampl] - Altitude amplitude factor. * @param [completeCallback] * @param [startCallback] @@ -1734,8 +1734,8 @@ export class Planet extends RenderNode { * Fly camera to the new geographical position. * @public * @param {LonLat} lonlat - Fly geographical coordiantes. - * @param {og.Vec3} [look] - Camera "look at" point on the end of a flying. - * @param {og.Vec3} [up] - Camera UP vector on the end of a flying. + * @param {Vec3} [look] - Camera "look at" point on the end of a flying. + * @param {Vec3} [up] - Camera UP vector on the end of a flying. * @param {Number} [ampl] - Altitude amplitude factor. * @param [completeCallback] * @param [startCallback] diff --git a/src/og/scene/RenderNode.js b/src/og/scene/RenderNode.js index 666d3e32..6dc53a2d 100644 --- a/src/og/scene/RenderNode.js +++ b/src/og/scene/RenderNode.js @@ -20,7 +20,7 @@ class RenderNode extends BaseNode { /** * Renderer that calls frame() callback. * @public - * @type {og.Renderer} + * @type {Renderer} */ this.renderer = null; @@ -43,7 +43,7 @@ class RenderNode extends BaseNode { /** * Point light array. * @private - * @type {Array.} + * @type {Array.} */ this._lights = []; this._lightsTransformedPositions = []; @@ -54,7 +54,7 @@ class RenderNode extends BaseNode { /** * Entity collection array. * @public - * @type {Array.} + * @type {Array.} */ this.entityCollections = []; @@ -66,7 +66,7 @@ class RenderNode extends BaseNode { /** * Adds node to the current hierarchy. * @public - * @type {og.RenderNode} + * @type {RenderNode} */ addNode(node) { super.addNode(node); @@ -76,7 +76,7 @@ class RenderNode extends BaseNode { /** * Assign render node with renderer. * @public - * @param {og.Renderer} renderer - Redner node's renderer. + * @param {Renderer} renderer - Redner node's renderer. */ assign(renderer) { this.renderer = renderer; @@ -119,9 +119,9 @@ class RenderNode extends BaseNode { /** * Adds entity collection. * @public - * @param {og.EntityCollection} entityCollection - Entity collection. + * @param {EntityCollection} entityCollection - Entity collection. * @param {boolean} [isHidden] - If it's true that this collection has specific rendering. - * @returns {og.scene.RenderNode} - + * @returns {scene.RenderNode} - */ addEntityCollection(entityCollection, isHidden) { entityCollection.addTo(this, isHidden); @@ -131,7 +131,7 @@ class RenderNode extends BaseNode { /** * Removes entity collection. * @public - * @param {og.EntityCollection} entityCollection - Entity collection for remove. + * @param {EntityCollection} entityCollection - Entity collection for remove. */ removeEntityCollection(entityCollection) { entityCollection.remove(); @@ -140,8 +140,8 @@ class RenderNode extends BaseNode { /** * Adds point light source. * @public - * @param {og.LightSource} light - Light source. - * @returns {og.scene.RenderNode} + * @param {LightSource} light - Light source. + * @returns {scene.RenderNode} */ addLight(light) { light.addTo(this); @@ -152,7 +152,7 @@ class RenderNode extends BaseNode { * Gets light object by its name. * @public * @param {string} name - Point light name. - * @returns {og.LightSource} + * @returns {LightSource} */ getLightByName(name) { var li = this._lightsNames.indexOf(name); @@ -162,7 +162,7 @@ class RenderNode extends BaseNode { /** * Removes light source. * @public - * @param {og.LightSource} light - Light source object. + * @param {LightSource} light - Light source object. */ removeLight(light) { light.remove(); diff --git a/src/og/segment/Segment.js b/src/og/segment/Segment.js index c86b7f03..4bd2bd43 100644 --- a/src/og/segment/Segment.js +++ b/src/og/segment/Segment.js @@ -58,10 +58,10 @@ window.BBSC = 100; /** * Planet segment Web Mercator tile class that stored and rendered with quad tree. * @class - * @param {og.quadTree.Node} node - Segment node. - * @param {og.scene.Planet} planet - Current planet scene. + * @param {quadTree.Node} node - Segment node. + * @param {scene.Planet} planet - Current planet scene. * @param {Number} tileZoom - Zoom index. - * @param {og.Extent} extent - Segment extent. + * @param {Extent} extent - Segment extent. */ class Segment { /** @@ -79,25 +79,25 @@ class Segment { /** * Quad tree node of the segment. - * @type {og.quadTree.Node} + * @type {quadTree.Node} */ this.node = node; /** * Planet pointer. - * @type {og.scene.Planet} + * @type {scene.Planet} */ this.planet = planet; /** * WebGl handler pointer. - * @type {og.webgl.Handler} + * @type {webgl.Handler} */ this.handler = planet.renderer.handler; /** * Segment bounding sphere - * @type {og.bv.Sphere} + * @type {bv.Sphere} */ this.bsphere = new Sphere(); @@ -105,7 +105,7 @@ class Segment { /** * Segment bounding box. - * @type {og.bv.Box} + * @type {bv.Box} */ this.bbox = new Box(); @@ -116,7 +116,7 @@ class Segment { /** * Geographical extent. - * @type {og.Extent} + * @type {Extent} */ this._extent = extent; @@ -162,7 +162,7 @@ class Segment { /** * Texture materials array. - * @type {Array.} + * @type {Array.} */ this.materials = []; @@ -252,7 +252,7 @@ class Segment { /** * Returns that segment good for rendering with camera by current lod ratio. * @public - * @param {og.Camera} camera - Camera object. + * @param {Camera} camera - Camera object. * @returns {boolean} - */ acceptForRendering(camera) { @@ -265,10 +265,10 @@ class Segment { /** * Returns entity terrain point. * @public - * @param {og.Entity} entity - Entity. - * @param {og.Vec3} res - Point coordinates. - * @param {og.Vec3} [normal] - Terrain point normal. - * @returns {og.Vec3} - + * @param {Entity} entity - Entity. + * @param {Vec3} res - Point coordinates. + * @param {Vec3} [normal] - Terrain point normal. + * @returns {Vec3} - */ getEntityTerrainPoint(entity, res, normal) { return this.getTerrainPoint(entity._cartesian, entity._lonlatMerc, res, normal); @@ -281,10 +281,10 @@ class Segment { /** * Returns distance from object to terrain coordinates and terrain point that calculates out in the res parameter. * @public - * @param {og.Vec3} xyz - Cartesian object position. + * @param {Vec3} xyz - Cartesian object position. * @param {LonLat} insideSegmentPosition - Geodetic object position. - * @param {og.Vec3} [res] - Result cartesian coordiantes on the terrain. - * @param {og.Vec3} [normal] - Terrain point normal. + * @param {Vec3} [res] - Result cartesian coordiantes on the terrain. + * @param {Vec3} [normal] - Terrain point normal. * @returns {number} - */ getTerrainPoint(xyz, insideSegmentPosition, res, normal) { @@ -375,6 +375,10 @@ class Segment { return lonlat.forwardMercator(); } + /** + * + * @param {boolean} forceLoading + */ loadTerrain(forceLoading) { if (this.tileZoom < this.planet.terrain.minZoom) { this.terrainIsLoading = true; @@ -1434,8 +1438,8 @@ class Segment { /** * Gets specific layer material. * @public - * @param {og.Layer} layer - Layer object. - * @returns {og.planetSegment.Material} - Segment material. + * @param {Layer} layer - Layer object. + * @returns {planetSegment.Material} - Segment material. */ getMaterialByLayer(layer) { return this.materials[layer._id]; diff --git a/src/og/segment/SegmentLonLat.js b/src/og/segment/SegmentLonLat.js index c95efe0b..79c94585 100644 --- a/src/og/segment/SegmentLonLat.js +++ b/src/og/segment/SegmentLonLat.js @@ -20,10 +20,10 @@ let _tempHigh = new Vec3(), * Planet segment Web Mercator tile class that stored and rendered with quad tree. * @class * @extends {Segment} - * @param {og.quadNode.Node} node - Quad tree segment node. - * @param {og.scene.Planet} planet - Scene planet. + * @param {quadNode.Node} node - Quad tree segment node. + * @param {scene.Planet} planet - Scene planet. * @param {Number} tileZoom - Segment tile zoom index. - * @param {og.Extent} extent - Segment WGS84 extent. + * @param {Extent} extent - Segment WGS84 extent. */ class SegmentLonLat extends Segment { /** diff --git a/src/og/shapes/BaseShape.js b/src/og/shapes/BaseShape.js index 07d8ba6a..94a6ea25 100644 --- a/src/og/shapes/BaseShape.js +++ b/src/og/shapes/BaseShape.js @@ -12,9 +12,9 @@ import { Mat4 } from '../math/Mat4.js'; * Base geometry shape class. * @class * @param {Object} options - Shape parameters: - * @param {og.Vec3} [options.position] - Shape position. - * @param {og.Quat} [options.orientation] - Shape orientation(rotation). - * @param {og.Vec3} [options.scale] - Scale vector. + * @param {Vec3} [options.position] - Shape position. + * @param {Quat} [options.orientation] - Shape orientation(rotation). + * @param {Vec3} [options.scale] - Scale vector. * @param {Array.} [options.color] - Shape RGBA color. (exactly 4 entries) * @param {string} [options.src] - Texture image url source. * @param {boolean} [options.visibility] - Shape visibility. @@ -36,21 +36,21 @@ class BaseShape { /** * Shape position. * @public - * @type {og.Vec3} + * @type {Vec3} */ this.position = options.position || new Vec3(); /** * Shape orientation(rotation) * @public - * @type {og.Quat} + * @type {Quat} */ this.orientation = options.orientation || new Quat(0.0, 0.0, 0.0, 1.0); /** * Scale. * @public - * @type {og.Vec3} + * @type {Vec3} */ this.scale = options.scale || new Vec3(1.0, 1.0, 1.0); @@ -130,21 +130,21 @@ class BaseShape { /** * Scale matrix. * @protected - * @type {og.Mat4} + * @type {Mat4} */ this._mxScale = new Mat4().setIdentity().scale(this.scale); /** * Translation matrix. * @protected - * @type {og.Mat4} + * @type {Mat4} */ this._mxTranslation = new Mat4().setIdentity(); /** * Model matrix. * @protected - * @type {og.Mat4} + * @type {Mat4} */ this._mxModel = new Mat4().setIdentity(); @@ -157,7 +157,7 @@ class BaseShape { /** * Assigned render node. * @protected - * @type {og.scene.RenderNode} + * @type {scene.RenderNode} */ this._renderNode = null; @@ -171,14 +171,14 @@ class BaseShape { /** * Entity instance that holds this shape. * @protected - * @type {og.Entity} + * @type {Entity} */ this._entity = null; /** * Handler that stores and renders this shape object. * @protected - * @type {og.ShapeHandler} + * @type {ShapeHandler} */ this._handler = null; @@ -240,7 +240,7 @@ class BaseShape { /** * Sets shape color. * @public - * @param {og.Vec4} color - RGBA color vector. + * @param {Vec4} color - RGBA color vector. */ setColor4v(color) { this.color[0] = color.x; @@ -296,7 +296,7 @@ class BaseShape { /** * Assign render node. * @public - * @param {og.scene.RenderNode} renderNode - Render node to assign. + * @param {scene.RenderNode} renderNode - Render node to assign. */ setRenderNode(renderNode) { this._renderNode = renderNode; @@ -314,7 +314,7 @@ class BaseShape { /** * Sets shape position. * @public - * @param {og.Vec3} position - Shape position. + * @param {Vec3} position - Shape position. */ setPosition3v(position) { this.position.copy(position); @@ -325,7 +325,7 @@ class BaseShape { /** * Translate shape position to vector. * @public - * @param {og.Vec3} vec - Translation vector. + * @param {Vec3} vec - Translation vector. */ translate3v(vec) { this.position.addA(vec); @@ -334,7 +334,7 @@ class BaseShape { /** * Sets shape scale. - * @param {og.Vec3} scale - Scale vector. + * @param {Vec3} scale - Scale vector. */ setScale3v(scale) { this.scale.copy(scale); @@ -358,7 +358,7 @@ class BaseShape { /** * Assign picking color. * @protected - * @param {og.Vec3} color - Picking RGB color. + * @param {Vec3} color - Picking RGB color. */ setPickingColor3v(color) { //... diff --git a/src/og/shapes/Icosphere.js b/src/og/shapes/Icosphere.js index a4c30ea7..81f9369e 100644 --- a/src/og/shapes/Icosphere.js +++ b/src/og/shapes/Icosphere.js @@ -10,9 +10,9 @@ import { BaseShape } from './BaseShape.js'; * @class * @extends {BaseShape} * @param {Object} options - Icosphere parameters: - * @param {og.Vec3} [options.position] - Icosphere position. - * @param {og.Quat} [options.orientation] - Icosphere orientation(rotation). - * @param {og.Vec3} [options.scale] - Scale vector. + * @param {Vec3} [options.position] - Icosphere position. + * @param {Quat} [options.orientation] - Icosphere orientation(rotation). + * @param {Vec3} [options.scale] - Scale vector. * @param {Array.} [options.color] - Icosphere RGBA color. (exactly 4 entries) * @param {string} [options.src] - Texture image url source. * @param {boolean} [options.visibility] - Icosphere visibility. diff --git a/src/og/shapes/Sphere.js b/src/og/shapes/Sphere.js index 1ec81f85..6976c481 100644 --- a/src/og/shapes/Sphere.js +++ b/src/og/shapes/Sphere.js @@ -10,9 +10,9 @@ import { BaseShape } from './BaseShape.js'; * @class * @extends {BaseShape} * @param {Object} options - Sphere parameters: - * @param {og.Vec3} [options.position] - Sphere position. - * @param {og.Quat} [options.orientation] - Sphere orientation(rotation). - * @param {og.Vec3} [options.scale] - Scale vector. + * @param {Vec3} [options.position] - Sphere position. + * @param {Quat} [options.orientation] - Sphere orientation(rotation). + * @param {Vec3} [options.scale] - Scale vector. * @param {Array.} [options.color] - Sphere RGBA color. (exactly 4 entries) * @param {string} [options.src] - Texture image url source. * @param {boolean} [options.visibility] - Sphere visibility. diff --git a/src/og/terrain/EmptyTerrain.js b/src/og/terrain/EmptyTerrain.js index 7640ba86..dc67b30a 100644 --- a/src/og/terrain/EmptyTerrain.js +++ b/src/og/terrain/EmptyTerrain.js @@ -58,7 +58,7 @@ class EmptyTerrain { /** * Planet node. * @protected - * @type {og.scene.Planet} + * @type {scene.Planet} */ this._planet = null; @@ -117,7 +117,7 @@ class EmptyTerrain { * Loads or creates segment elevation data. * @public * @virtual - * @param {og.planetSegment.Segment} segment - Segment to create elevation data. + * @param {planetSegment.Segment} segment - Segment to create elevation data. */ handleSegmentTerrain(segment) { segment.terrainIsLoading = false; diff --git a/src/og/terrain/GlobusTerrain.js b/src/og/terrain/GlobusTerrain.js index 28306a9a..4a5ed9bd 100644 --- a/src/og/terrain/GlobusTerrain.js +++ b/src/og/terrain/GlobusTerrain.js @@ -17,7 +17,6 @@ import { Vec3 } from "../math/Vec3.js"; import { Ray } from "../math/Ray.js"; import { Extent } from "../Extent.js"; import { LonLat } from "../LonLat.js"; -import { MAX_NORMAL_ZOOM } from "../segment/Segment.js"; const EVENT_NAMES = [ /** @@ -63,7 +62,7 @@ class GlobusTerrain extends EmptyTerrain { /** * Events handler. * @public - * @type {og.Events} + * @type {Events} */ this.events = new Events(EVENT_NAMES, this); @@ -140,7 +139,7 @@ class GlobusTerrain extends EmptyTerrain { * Rewrites elevation storage url query. * @private * @callback og.terrain.GlobusTerrain~_urlRewriteCallback - * @param {og.planetSegment.Segment} segment - Segment to load. + * @param {planetSegment.Segment} segment - Segment to load. * @param {string} url - Created url. * @returns {string} - Url query string. */ @@ -350,7 +349,8 @@ class GlobusTerrain extends EmptyTerrain { * Starts to load segment data. * @public * @virtual - * @param {og.planetSegment.Segment} segment - Segment that wants a terrain data. + * @param {Segment} segment - Segment that wants a terrain data. + * @param {boolean} forceLoading */ loadTerrain(segment, forceLoading) { if (this._planet.terrainLock.isFree()) { @@ -400,7 +400,7 @@ class GlobusTerrain extends EmptyTerrain { * Creates query url. * @protected * @virtual - * @param {og.planetSegment.Segment} segment - + * @param {planetSegment.Segment} segment - * @returns {string} - */ _createUrl(segment) { @@ -414,7 +414,7 @@ class GlobusTerrain extends EmptyTerrain { /** * Returns actual url query string. * @protected - * @param {og.planetSegment.Segment} segment - Segment that loads image data. + * @param {planetSegment.Segment} segment - Segment that loads image data. * @returns {string} - Url string. */ _getHTTPRequestString(segment) { @@ -426,7 +426,7 @@ class GlobusTerrain extends EmptyTerrain { /** * Sets url rewrite callback, used for custom url rewriting for every tile laoding. * @public - * @param {og.terrain.GlobusTerrain~_urlRewriteCallback} ur - The callback that returns tile custom created url. + * @param {terrain.GlobusTerrain~_urlRewriteCallback} ur - The callback that returns tile custom created url. */ setUrlRewriteCallback(ur) { this._urlRewriteCallback = ur; @@ -445,7 +445,7 @@ class GlobusTerrain extends EmptyTerrain { /** * @protected - * @param {og.planetSegment.Segment} segment - + * @param {planetSegment.Segment} segment - * @param {*} data - */ _applyElevationsData(segment, elevations) { diff --git a/src/og/utils/TextureAtlas.js b/src/og/utils/TextureAtlas.js index 552244e7..bab40fb1 100644 --- a/src/og/utils/TextureAtlas.js +++ b/src/og/utils/TextureAtlas.js @@ -17,7 +17,7 @@ class TextureAtlas { /** * Atlas nodes where input images store. It can be access by image.__nodeIndex. * @public - * @type {Array.} + * @type {Array.} */ this.nodes = []; @@ -71,7 +71,7 @@ class TextureAtlas { /** * Sets openglobus gl handler that creates gl texture. * @public - * @param {og.webgl.Handler} handler - WebGL handler. + * @param {webgl.Handler} handler - WebGL handler. */ assignHandler(handler) { this._handler = handler; @@ -95,7 +95,7 @@ class TextureAtlas { * @param {Object} image - Input javascript image object. * @param {boolean} [fastInsert] - If it's true atlas doesnt restore all images again * and store image in the curent atlas sheme. - * @returns {og.utils.TextureAtlasNode} - + * @returns {utils.TextureAtlasNode} - */ addImage(image, fastInsert) { @@ -215,7 +215,7 @@ class TextureAtlas { /** * Atlas binary tree node. * @class - * @param {og.Rectangle} rect - Node image rectangle. + * @param {Rectangle} rect - Node image rectangle. */ class TextureAtlasNode { constructor(rect, texCoords) { diff --git a/src/og/utils/shared.js b/src/og/utils/shared.js index 5c9bf4bd..04cb34d5 100644 --- a/src/og/utils/shared.js +++ b/src/og/utils/shared.js @@ -56,7 +56,7 @@ export function readTextFile(fileUrl) { * Convert html color string to the RGBA number vector. * @param {string} htmlColor - HTML string("#C6C6C6" or "#EF5" or "rgb(8,8,8)" or "rgba(8,8,8)") color. * @param {number} [opacity] - Opacity for the output vector. - * @returns {og.math.Vec4} - + * @returns {math.Vec4} - */ export function htmlColorToRgba(htmlColor, opacity) { var hColor = colorTable[htmlColor]; @@ -99,7 +99,7 @@ export function htmlColorToFloat32Array(htmlColor, opacity) { * Convert html color string to the RGB number vector. * @param {string} htmlColor - HTML string("#C6C6C6" or "#EF5" or "rgb(8,8,8)" or "rgba(8,8,8)") color. * @param {number} [opacity] - Opacity for the output vector. - * @returns {og.Vec3} - + * @returns {Vec3} - */ export function htmlColorToRgb(htmlColor) { var hColor = colorTable[htmlColor]; @@ -283,7 +283,7 @@ export function binarySearchFast(arr, x) { * Finds an item in a sorted array. * @param {Array} ar The sorted array to search. * @param {Object} el The item to find in the array. - * @param {og.utils.binarySearch~compare_fn} compare_fn comparator The function to use to compare the item to + * @param {utils.binarySearch~compare_fn} compare_fn comparator The function to use to compare the item to * elements in the array. * @returns {Number} a negative number if a is less than b; 0 if a is equal to b;a positive number of a is greater than b. * @@ -316,7 +316,7 @@ export function binarySearch(ar, el, compare_fn) { * Binary insertion that uses binarySearch algorithm. * @param {Array} ar - The sorted array to insert. * @param {Object} el - The item to insert. - * @param {og.utils.binarySearch~compare_fn} compare_fn - comparator The function to use to compare the item to + * @param {utils.binarySearch~compare_fn} compare_fn - comparator The function to use to compare the item to * elements in the array. * @returns {Number} Array index position in which item inserted in. */ @@ -332,12 +332,12 @@ export function binaryInsert(ar, el, compare_fn) { /** * Returns two segment lines intersection coordinate. * @static - * @param {og.math.Vec2} start1 - First line first coordinate. - * @param {og.math.Vec2} end1 - First line second coordinate. - * @param {og.math.Vec2} start2 - Second line first coordinate. - * @param {og.math.Vec2} end2 - Second line second coordinate. + * @param {math.Vec2} start1 - First line first coordinate. + * @param {math.Vec2} end1 - First line second coordinate. + * @param {math.Vec2} start2 - Second line first coordinate. + * @param {math.Vec2} end2 - Second line second coordinate. * @param {boolean} [isSegment] - Lines are segments. - * @return {og.math.Vec2} - Intersection coordinate. + * @return {math.Vec2} - Intersection coordinate. */ export function getLinesIntersection2v(start1, end1, start2, end2, isSegment) { var dir1 = end1.sub(start1); @@ -372,12 +372,12 @@ export function getLinesIntersection2v(start1, end1, start2, end2, isSegment) { /** * Returns two segment lines intersection coordinate. * @static - * @param {og.math.Vec2} start1 - First line first coordinate. - * @param {og.math.Vec2} end1 - First line second coordinate. - * @param {og.math.Vec2} start2 - Second line first coordinate. - * @param {og.math.Vec2} end2 - Second line second coordinate. + * @param {math.Vec2} start1 - First line first coordinate. + * @param {math.Vec2} end1 - First line second coordinate. + * @param {math.Vec2} start2 - Second line first coordinate. + * @param {math.Vec2} end2 - Second line second coordinate. * @param {boolean} [isSegment] - Lines are segments. - * @return {og.math.Vec2} - Intersection coordinate. + * @return {math.Vec2} - Intersection coordinate. */ export function getLinesIntersectionLonLat(start1, end1, start2, end2, isSegment) { var dir1 = new LonLat(end1.lon - start1.lon, end1.lat - start1.lat); diff --git a/src/og/webgl/Framebuffer.js b/src/og/webgl/Framebuffer.js index 8f15e963..b03885cc 100644 --- a/src/og/webgl/Framebuffer.js +++ b/src/og/webgl/Framebuffer.js @@ -9,7 +9,7 @@ import { ImageCanvas } from '../ImageCanvas.js'; /** * Class represents framebuffer. * @class - * @param {og.webgl.Handler} handler - WebGL handler. + * @param {webgl.Handler} handler - WebGL handler. * @param {Object} [options] - Framebuffer options: * @param {number} [options.width] - Framebuffer width. Default is handler canvas width. * @param {number} [options.height] - Framebuffer height. Default is handler canvas height. @@ -27,7 +27,7 @@ export class Framebuffer { /** * WebGL handler. * @public - * @type {og.webgl.Handler} + * @type {webgl.Handler} */ this.handler = handler; @@ -269,7 +269,7 @@ export class Framebuffer { /** * Activate framebuffer frame to draw. * @public - * @returns {og.webgl.Framebuffer} Returns Current framebuffer. + * @returns {webgl.Framebuffer} Returns Current framebuffer. */ activate() { var gl = this.handler.gl; diff --git a/src/og/webgl/Handler.js b/src/og/webgl/Handler.js index fd3fa667..7c5a6a1c 100644 --- a/src/og/webgl/Handler.js +++ b/src/og/webgl/Handler.js @@ -40,14 +40,14 @@ class Handler { /** * Application default timer. * @public - * @type {og.Clock} + * @type {Clock} */ this.defaultClock = new Clock(); /** * Custom timers. * @protected - * @type{og.Clock[]} + * @type{Clock[]} */ this._clocks = []; @@ -83,7 +83,7 @@ class Handler { /** * Current active shader program controller. * @public - * @type {og.webgl.ProgramController} + * @type {webgl.ProgramController} */ this.activeProgram = null; @@ -483,9 +483,9 @@ class Handler { /** * Adds shader program to the handler. * @public - * @param {og.webgl.Program} program - Shader program. + * @param {webgl.Program} program - Shader program. * @param {boolean} [notActivate] - If it's true program will not compile. - * @return {og.webgl.Program} - + * @return {webgl.Program} - */ addProgram(program, notActivate) { if (!this.programs[program.name]) { @@ -515,7 +515,7 @@ class Handler { /** * Adds shader programs to the handler. * @public - * @param {Array.} programsArr - Shader program array. + * @param {Array.} programsArr - Shader program array. */ addPrograms(programsArr) { for (var i = 0; i < programsArr.length; i++) { @@ -526,7 +526,7 @@ class Handler { /** * Used in addProgram * @private - * @param {og.webgl.ProgramController} sc - Program controller + * @param {webgl.ProgramController} sc - Program controller */ _initProgramController(sc) { if (this._initialized) { diff --git a/src/og/webgl/Multisample.js b/src/og/webgl/Multisample.js index 5c418a73..89284983 100644 --- a/src/og/webgl/Multisample.js +++ b/src/og/webgl/Multisample.js @@ -7,7 +7,7 @@ /** * Class represents multisample framebuffer. * @class - * @param {og.webgl.Handler} handler - WebGL handler. + * @param {webgl.Handler} handler - WebGL handler. * @param {Object} [options] - Framebuffer options: * @param {number} [options.width] - Framebuffer width. Default is handler canvas width. * @param {number} [options.height] - Framebuffer height. Default is handler canvas height. @@ -24,7 +24,7 @@ export class Multisample { /** * WebGL handler. * @public - * @type {og.webgl.Handler} + * @type {webgl.Handler} */ this.handler = handler; @@ -193,7 +193,7 @@ export class Multisample { /** * Activate framebuffer frame to draw. * @public - * @returns {og.webgl.Framebuffer} Returns Current framebuffer. + * @returns {webgl.Framebuffer} Returns Current framebuffer. */ activate() { var gl = this.handler.gl; diff --git a/src/og/webgl/Program.js b/src/og/webgl/Program.js index 76710bd6..dff9137a 100644 --- a/src/og/webgl/Program.js +++ b/src/og/webgl/Program.js @@ -122,7 +122,7 @@ class Program { /** * Bind program buffer. * @function - * @param {og.webgl.Program} program - Used program. + * @param {webgl.Program} program - Used program. * @param {Object} variable - Variable represents buffer data. */ static bindBuffer(program, variable) { diff --git a/src/og/webgl/ProgramController.js b/src/og/webgl/ProgramController.js index 8b2b522a..9694dae2 100644 --- a/src/og/webgl/ProgramController.js +++ b/src/og/webgl/ProgramController.js @@ -5,8 +5,8 @@ * program capabilities, like switching program during the rendering. * Get access to the program from ...handler.programs. etc. * @class - * @param {og.webgl.Handler} handler - Handler. - * @param {og.webgl.Program} program - Shader program. + * @param {webgl.Handler} handler - Handler. + * @param {webgl.Program} program - Shader program. */ export class ProgramController { @@ -15,14 +15,14 @@ export class ProgramController { /** * Shader program. * @private - * @type {og.webgl.Program} + * @type {webgl.Program} */ this._program = program; /** * Handler. * @private - * @type {og.webgl.Handler} + * @type {webgl.Handler} */ this._handler = handler; @@ -45,7 +45,7 @@ export class ProgramController { /** * Returns controller's shader program. * @public - * @return {og.webgl.Program} - + * @return {webgl.Program} - */ getProgram() { return this._program; @@ -106,7 +106,7 @@ export class ProgramController { * Sets program uniforms and attributes values and return controller instance. * @public * @param {Object} params - Object with variable name and value like { value: 12, someArray:[1,2,3], uSampler: texture,... } - * @return {og.webgl.ProgramController} - + * @return {webgl.ProgramController} - */ set(params) { this.activate(); @@ -119,7 +119,7 @@ export class ProgramController { * @public * @param {number} mode - Gl draw mode * @param {WEBGLBuffer} buffer - Buffer to draw. - * @return {og.webgl.ProgramController} Returns current shader controller instance. + * @return {webgl.ProgramController} Returns current shader controller instance. */ drawIndexBuffer(mode, buffer) { this._program.drawIndexBuffer(mode, buffer); @@ -130,7 +130,7 @@ export class ProgramController { * Calls Gl drawArray function. * @param {number} mode - Gl draw mode. * @param {number} numItems - draw items count. - * @return {og.webgl.ProgramController} Returns current shader controller instance. + * @return {webgl.ProgramController} Returns current shader controller instance. */ drawArrays(mode, numItems) { this._program.drawArrays(mode, numItems); From 3f74361e440a5ce16babc2fd2e83f172416a4a45 Mon Sep 17 00:00:00 2001 From: Thibaut Lassalle Date: Sun, 31 Oct 2021 12:44:16 -0700 Subject: [PATCH 09/27] better types --- src/og/Globe.js | 6 +++--- src/og/camera/Frustum.js | 6 +++--- src/og/camera/PlanetCamera.js | 2 +- src/og/control/Sun.js | 2 +- src/og/entity/EntityCollection.js | 4 ++-- src/og/entity/PointCloud.js | 4 ++-- src/og/entity/Polyline.js | 2 +- src/og/entity/Strip.js | 4 ++-- src/og/layer/Layer.js | 6 +++--- src/og/light/LightSource.js | 4 ++-- src/og/math/Ray.js | 2 +- src/og/quadTree/Node.js | 2 +- src/og/renderer/Renderer.js | 4 ++-- src/og/scene/Planet.js | 4 ++-- src/og/scene/RenderNode.js | 4 ++-- src/og/segment/Segment.js | 10 +++++----- src/og/segment/SegmentLonLat.js | 4 ++-- src/og/shapes/BaseShape.js | 4 ++-- src/og/terrain/EmptyTerrain.js | 2 +- src/og/terrain/GlobusTerrain.js | 2 +- 20 files changed, 39 insertions(+), 39 deletions(-) diff --git a/src/og/Globe.js b/src/og/Globe.js index ed764d52..b2f75e8a 100644 --- a/src/og/Globe.js +++ b/src/og/Globe.js @@ -50,9 +50,9 @@ const PLANET_NAME_PREFIX = "globus_planet_"; * * @param {object} options - Options: * @param {string} options.target - HTML element id where planet canvas have to be created. - * @param {scene.RenderNode} [options.skybox] - Render skybox. null - default. + * @param {RenderNode} [options.skybox] - Render skybox. null - default. * @param {string} [options.name] - Planet name. Default is unic identifier. - * @param {terrain.Terrain} [options.terrain] - Terrain provider. Default no terrain - og.terrain.EmptyTerrain. + * @param {Terrain} [options.terrain] - Terrain provider. Default no terrain - og.terrain.EmptyTerrain. * @param {Array.} [options.controls] - Renderer controls array. * @param {Array.} [options.layers] - Planet layers. * @param {Extent} [options.viewExtent] - Viewable starting extent. @@ -148,7 +148,7 @@ class Globe { /** * Render node renders a planet. * @public - * @type {scene.Planet|og.scene.PlanetAtmosphere} + * @type {Planet|og.scene.PlanetAtmosphere} */ // TODO: } else { diff --git a/src/og/camera/Frustum.js b/src/og/camera/Frustum.js index b4b70edb..8111078e 100644 --- a/src/og/camera/Frustum.js +++ b/src/og/camera/Frustum.js @@ -227,7 +227,7 @@ class Frustum { /** * Returns true if the frustum contains a bonding sphere, but bottom plane exclude. * @public - * @param {bv.Sphere} sphere - Bounding sphere. + * @param {Sphere} sphere - Bounding sphere. * @returns {boolean} - */ containsSphereBottomExc(sphere) { @@ -251,7 +251,7 @@ class Frustum { /** * Returns true if the frustum contains a bonding sphere. * @public - * @param {bv.Sphere} sphere - Bounding sphere. + * @param {Sphere} sphere - Bounding sphere. * @returns {boolean} - */ containsSphere(sphere) { @@ -287,7 +287,7 @@ class Frustum { /** * Returns true if the frustum contains a bounding box. * @public - * @param {bv.Box} box - Bounding box. + * @param {Box} box - Bounding box. * @returns {boolean} - */ containsBox(box) { diff --git a/src/og/camera/PlanetCamera.js b/src/og/camera/PlanetCamera.js index 7f4dc803..6b5ca623 100644 --- a/src/og/camera/PlanetCamera.js +++ b/src/og/camera/PlanetCamera.js @@ -50,7 +50,7 @@ class PlanetCamera extends Camera { /** * Assigned camera's planet. * @public - * @type {scene.Planet} + * @type {Planet} */ this.planet = planet; diff --git a/src/og/control/Sun.js b/src/og/control/Sun.js index 72ff1ce8..12e1de0b 100644 --- a/src/og/control/Sun.js +++ b/src/og/control/Sun.js @@ -28,7 +28,7 @@ class Sun extends Control { /** * Earth planet node. * @public - * @type {scene.Planet} + * @type {Planet} */ this.planet = null; diff --git a/src/og/entity/EntityCollection.js b/src/og/entity/EntityCollection.js index 58fed161..eaf87200 100644 --- a/src/og/entity/EntityCollection.js +++ b/src/og/entity/EntityCollection.js @@ -85,7 +85,7 @@ class EntityCollection { /** * Render node context. * @public - * @type {scene.RenderNode} + * @type {RenderNode} */ this.renderNode = null; @@ -468,7 +468,7 @@ class EntityCollection { /** * Adds this collection to render node. * @public - * @param {scene.RenderNode} renderNode - Render node. + * @param {RenderNode} renderNode - Render node. * @param {boolean} [isHidden] - Uses in vector layers that render in planet render specific function. * @returns {EntityCollection} - */ diff --git a/src/og/entity/PointCloud.js b/src/og/entity/PointCloud.js index 295f9d5d..97d70013 100644 --- a/src/og/entity/PointCloud.js +++ b/src/og/entity/PointCloud.js @@ -68,7 +68,7 @@ class PointCloud { /** * Parent collection render node. * @private - * @type {scene.RenderNode} + * @type {RenderNode} */ this._renderNode = null; @@ -189,7 +189,7 @@ class PointCloud { /** * Assign rendering scene node. * @public - * @param {scene.RenderNode} renderNode - Assigned render node. + * @param {RenderNode} renderNode - Assigned render node. */ setRenderNode(renderNode) { this._renderNode = renderNode; diff --git a/src/og/entity/Polyline.js b/src/og/entity/Polyline.js index 452f76a2..6509cc59 100644 --- a/src/og/entity/Polyline.js +++ b/src/og/entity/Polyline.js @@ -1752,7 +1752,7 @@ class Polyline { /** * Assign with render node. * @public - * @param {scene.RenderNode} renderNode - + * @param {RenderNode} renderNode - */ setRenderNode(renderNode) { if (renderNode) { diff --git a/src/og/entity/Strip.js b/src/og/entity/Strip.js index 348bfff3..5c1db9a5 100644 --- a/src/og/entity/Strip.js +++ b/src/og/entity/Strip.js @@ -57,7 +57,7 @@ class Strip { /** * Parent collection render node. * @private - * @type {scene.RenderNode} + * @type {RenderNode} */ this._renderNode = null; @@ -177,7 +177,7 @@ class Strip { /** * Assign rendering scene node. * @public - * @param {scene.RenderNode} renderNode - Assigned render node. + * @param {RenderNode} renderNode - Assigned render node. */ setRenderNode(renderNode) { this._renderNode = renderNode; diff --git a/src/og/layer/Layer.js b/src/og/layer/Layer.js index 41d85d28..7dadd700 100644 --- a/src/og/layer/Layer.js +++ b/src/og/layer/Layer.js @@ -118,7 +118,7 @@ class Layer { /** * Planet node. * @protected - * @type {scene.Planet} + * @type {Planet} */ this._planet = null; @@ -321,7 +321,7 @@ class Layer { * Assign the planet. * @protected * @virtual - * @param {scene.Planet} planet - Planet render node. + * @param {Planet} planet - Planet render node. */ _assignPlanet(planet) { planet.layers.push(this); @@ -348,7 +348,7 @@ class Layer { /** * Adds layer to the planet. * @public - * @param {scene.Planet} planet - Adds layer to the planet. + * @param {Planet} planet - Adds layer to the planet. */ addTo(planet) { if (!this._planet) { diff --git a/src/og/light/LightSource.js b/src/og/light/LightSource.js index 6b434533..4561a535 100644 --- a/src/og/light/LightSource.js +++ b/src/og/light/LightSource.js @@ -42,7 +42,7 @@ class LightSource { /** * Render node where light is shines. * @protected - * @type {scene.RenderNode} + * @type {RenderNode} */ this._renderNode = null; @@ -320,7 +320,7 @@ class LightSource { /** * Adds current light to the render node scene. * @public - * @param {scene.RenderNode} renderNode - Render node scene. + * @param {RenderNode} renderNode - Render node scene. * @returns {LightSource} */ addTo(renderNode) { diff --git a/src/og/math/Ray.js b/src/og/math/Ray.js index feb27e3e..4ef6a31b 100644 --- a/src/og/math/Ray.js +++ b/src/og/math/Ray.js @@ -171,7 +171,7 @@ export class Ray { /** * Returns a ray hit sphere coordiante. If there isn't hit returns null. * @public - * @param {bv.Sphere} sphere - Sphere object. + * @param {Sphere} sphere - Sphere object. * @returns {Vec3} */ hitSphere(sphere) { diff --git a/src/og/quadTree/Node.js b/src/og/quadTree/Node.js index 3b5a600f..cd04ccdd 100644 --- a/src/og/quadTree/Node.js +++ b/src/og/quadTree/Node.js @@ -56,7 +56,7 @@ let BOUNDS = { * Quad tree planet segment node. * @constructor * @param {planetSegment.Segment|og.planetSegment.SegmentLonLat} segmentPrototype - Planet segment node constructor. - * @param {scene.RenderNode} planet - Planet render node. + * @param {RenderNode} planet - Planet render node. * @param {number} partId - NorthEast, SouthWest etc. * @param {quadTree.Node} parent - Parent of this node. * @param {number} id - Tree node identifier (id * 4 + 1); diff --git a/src/og/renderer/Renderer.js b/src/og/renderer/Renderer.js index 93c5b37d..5a91de3e 100644 --- a/src/og/renderer/Renderer.js +++ b/src/og/renderer/Renderer.js @@ -564,7 +564,7 @@ class Renderer { /** * Adds render node to the renderer. * @public - * @param {scene.RenderNode} renderNode - Render node. + * @param {RenderNode} renderNode - Render node. */ addNode(renderNode) { if (!this.renderNodes[renderNode.name]) { @@ -579,7 +579,7 @@ class Renderer { /** * Adds render node to the renderer before specific node. * @public - * @param {scene.RenderNode} renderNode - Render node. + * @param {RenderNode} renderNode - Render node. */ addNodeBefore(renderNode, renderNodeBefore) { if (!this.renderNodes[renderNode.name]) { diff --git a/src/og/scene/Planet.js b/src/og/scene/Planet.js index b3d80b0d..e0eb9eb9 100644 --- a/src/og/scene/Planet.js +++ b/src/og/scene/Planet.js @@ -163,7 +163,7 @@ export class Planet extends RenderNode { /** * Terrain provider. * @public - * @type {terrain.Terrain} + * @type {Terrain} */ this.terrain = null; @@ -560,7 +560,7 @@ export class Planet extends RenderNode { /** * Sets terrain provider * @public - * @param {terrain.Terrain} terrain - Terrain provider. + * @param {Terrain} terrain - Terrain provider. */ setTerrain(terrain) { this._renderCompletedActivated = false; diff --git a/src/og/scene/RenderNode.js b/src/og/scene/RenderNode.js index 6dc53a2d..810ddf62 100644 --- a/src/og/scene/RenderNode.js +++ b/src/og/scene/RenderNode.js @@ -121,7 +121,7 @@ class RenderNode extends BaseNode { * @public * @param {EntityCollection} entityCollection - Entity collection. * @param {boolean} [isHidden] - If it's true that this collection has specific rendering. - * @returns {scene.RenderNode} - + * @returns {RenderNode} - */ addEntityCollection(entityCollection, isHidden) { entityCollection.addTo(this, isHidden); @@ -141,7 +141,7 @@ class RenderNode extends BaseNode { * Adds point light source. * @public * @param {LightSource} light - Light source. - * @returns {scene.RenderNode} + * @returns {RenderNode} */ addLight(light) { light.addTo(this); diff --git a/src/og/segment/Segment.js b/src/og/segment/Segment.js index 4bd2bd43..c1290e53 100644 --- a/src/og/segment/Segment.js +++ b/src/og/segment/Segment.js @@ -59,14 +59,14 @@ window.BBSC = 100; * Planet segment Web Mercator tile class that stored and rendered with quad tree. * @class * @param {quadTree.Node} node - Segment node. - * @param {scene.Planet} planet - Current planet scene. + * @param {Planet} planet - Current planet scene. * @param {Number} tileZoom - Zoom index. * @param {Extent} extent - Segment extent. */ class Segment { /** * @param {quadTree.Node} node - Segment node. - * @param {scene.Planet} planet - Current planet scene. + * @param {Planet} planet - Current planet scene. * @param {number} tileZoom - Zoom index. * @param {Extent} extent - Segment extent. */ @@ -85,7 +85,7 @@ class Segment { /** * Planet pointer. - * @type {scene.Planet} + * @type {Planet} */ this.planet = planet; @@ -97,7 +97,7 @@ class Segment { /** * Segment bounding sphere - * @type {bv.Sphere} + * @type {Sphere} */ this.bsphere = new Sphere(); @@ -105,7 +105,7 @@ class Segment { /** * Segment bounding box. - * @type {bv.Box} + * @type {Box} */ this.bbox = new Box(); diff --git a/src/og/segment/SegmentLonLat.js b/src/og/segment/SegmentLonLat.js index 79c94585..ffdbc5dd 100644 --- a/src/og/segment/SegmentLonLat.js +++ b/src/og/segment/SegmentLonLat.js @@ -21,14 +21,14 @@ let _tempHigh = new Vec3(), * @class * @extends {Segment} * @param {quadNode.Node} node - Quad tree segment node. - * @param {scene.Planet} planet - Scene planet. + * @param {Planet} planet - Scene planet. * @param {Number} tileZoom - Segment tile zoom index. * @param {Extent} extent - Segment WGS84 extent. */ class SegmentLonLat extends Segment { /** * @param {quadTree.Node} node - Segment node. - * @param {scene.Planet} planet - Current planet scene. + * @param {Planet} planet - Current planet scene. * @param {number} tileZoom - Zoom index. * @param {Extent} extent - Segment extent. */ diff --git a/src/og/shapes/BaseShape.js b/src/og/shapes/BaseShape.js index 94a6ea25..baa405d6 100644 --- a/src/og/shapes/BaseShape.js +++ b/src/og/shapes/BaseShape.js @@ -157,7 +157,7 @@ class BaseShape { /** * Assigned render node. * @protected - * @type {scene.RenderNode} + * @type {RenderNode} */ this._renderNode = null; @@ -296,7 +296,7 @@ class BaseShape { /** * Assign render node. * @public - * @param {scene.RenderNode} renderNode - Render node to assign. + * @param {RenderNode} renderNode - Render node to assign. */ setRenderNode(renderNode) { this._renderNode = renderNode; diff --git a/src/og/terrain/EmptyTerrain.js b/src/og/terrain/EmptyTerrain.js index dc67b30a..9208b683 100644 --- a/src/og/terrain/EmptyTerrain.js +++ b/src/og/terrain/EmptyTerrain.js @@ -58,7 +58,7 @@ class EmptyTerrain { /** * Planet node. * @protected - * @type {scene.Planet} + * @type {Planet} */ this._planet = null; diff --git a/src/og/terrain/GlobusTerrain.js b/src/og/terrain/GlobusTerrain.js index 4a5ed9bd..728162a4 100644 --- a/src/og/terrain/GlobusTerrain.js +++ b/src/og/terrain/GlobusTerrain.js @@ -426,7 +426,7 @@ class GlobusTerrain extends EmptyTerrain { /** * Sets url rewrite callback, used for custom url rewriting for every tile laoding. * @public - * @param {terrain.GlobusTerrain~_urlRewriteCallback} ur - The callback that returns tile custom created url. + * @param {GlobusTerrain~_urlRewriteCallback} ur - The callback that returns tile custom created url. */ setUrlRewriteCallback(ur) { this._urlRewriteCallback = ur; From 9d4c5acfb7ef297222799a5a7b829fc4e9ae4c81 Mon Sep 17 00:00:00 2001 From: Thibaut Lassalle Date: Sun, 31 Oct 2021 15:18:43 -0700 Subject: [PATCH 10/27] better types --- src/og/renderer/Renderer.js | 6 +++--- src/og/segment/Segment.js | 2 +- src/og/utils/TextureAtlas.js | 2 +- src/og/webgl/Framebuffer.js | 6 +++--- src/og/webgl/Handler.js | 10 +++++----- src/og/webgl/Multisample.js | 6 +++--- src/og/webgl/Program.js | 2 +- src/og/webgl/ProgramController.js | 22 ++++++++++++++-------- 8 files changed, 31 insertions(+), 25 deletions(-) diff --git a/src/og/renderer/Renderer.js b/src/og/renderer/Renderer.js index 5a91de3e..3736afc8 100644 --- a/src/og/renderer/Renderer.js +++ b/src/og/renderer/Renderer.js @@ -24,7 +24,7 @@ let __depthCallbackCounter__ = 0; /** * Represents high level WebGL context interface that starts WebGL handler working in real time. * @class - * @param {webgl.Handler} handler - WebGL handler context. + * @param {Handler} handler - WebGL handler context. * @param {Object} [params] - Renderer parameters: * @fires og.RendererEvents#draw * @fires og.RendererEvents#resize @@ -69,7 +69,7 @@ class Renderer { /** * WebGL handler context. * @public - * @type {webgl.Handler} + * @type {Handler} */ this.handler = handler; @@ -147,7 +147,7 @@ class Renderer { /** * Picking objects(labels and billboards) framebuffer. * @public - * @type {webgl.Framebuffer} + * @type {Framebuffer} */ this.pickingFramebuffer = null; diff --git a/src/og/segment/Segment.js b/src/og/segment/Segment.js index c1290e53..217f0993 100644 --- a/src/og/segment/Segment.js +++ b/src/og/segment/Segment.js @@ -91,7 +91,7 @@ class Segment { /** * WebGl handler pointer. - * @type {webgl.Handler} + * @type {Handler} */ this.handler = planet.renderer.handler; diff --git a/src/og/utils/TextureAtlas.js b/src/og/utils/TextureAtlas.js index bab40fb1..8ffc8886 100644 --- a/src/og/utils/TextureAtlas.js +++ b/src/og/utils/TextureAtlas.js @@ -71,7 +71,7 @@ class TextureAtlas { /** * Sets openglobus gl handler that creates gl texture. * @public - * @param {webgl.Handler} handler - WebGL handler. + * @param {Handler} handler - WebGL handler. */ assignHandler(handler) { this._handler = handler; diff --git a/src/og/webgl/Framebuffer.js b/src/og/webgl/Framebuffer.js index b03885cc..10064b4d 100644 --- a/src/og/webgl/Framebuffer.js +++ b/src/og/webgl/Framebuffer.js @@ -9,7 +9,7 @@ import { ImageCanvas } from '../ImageCanvas.js'; /** * Class represents framebuffer. * @class - * @param {webgl.Handler} handler - WebGL handler. + * @param {Handler} handler - WebGL handler. * @param {Object} [options] - Framebuffer options: * @param {number} [options.width] - Framebuffer width. Default is handler canvas width. * @param {number} [options.height] - Framebuffer height. Default is handler canvas height. @@ -27,7 +27,7 @@ export class Framebuffer { /** * WebGL handler. * @public - * @type {webgl.Handler} + * @type {Handler} */ this.handler = handler; @@ -269,7 +269,7 @@ export class Framebuffer { /** * Activate framebuffer frame to draw. * @public - * @returns {webgl.Framebuffer} Returns Current framebuffer. + * @returns {Framebuffer} Returns Current framebuffer. */ activate() { var gl = this.handler.gl; diff --git a/src/og/webgl/Handler.js b/src/og/webgl/Handler.js index 7c5a6a1c..d66a966b 100644 --- a/src/og/webgl/Handler.js +++ b/src/og/webgl/Handler.js @@ -83,7 +83,7 @@ class Handler { /** * Current active shader program controller. * @public - * @type {webgl.ProgramController} + * @type {ProgramController} */ this.activeProgram = null; @@ -483,9 +483,9 @@ class Handler { /** * Adds shader program to the handler. * @public - * @param {webgl.Program} program - Shader program. + * @param {Program} program - Shader program. * @param {boolean} [notActivate] - If it's true program will not compile. - * @return {webgl.Program} - + * @return {Program} - */ addProgram(program, notActivate) { if (!this.programs[program.name]) { @@ -515,7 +515,7 @@ class Handler { /** * Adds shader programs to the handler. * @public - * @param {Array.} programsArr - Shader program array. + * @param {Array.} programsArr - Shader program array. */ addPrograms(programsArr) { for (var i = 0; i < programsArr.length; i++) { @@ -526,7 +526,7 @@ class Handler { /** * Used in addProgram * @private - * @param {webgl.ProgramController} sc - Program controller + * @param {ProgramController} sc - Program controller */ _initProgramController(sc) { if (this._initialized) { diff --git a/src/og/webgl/Multisample.js b/src/og/webgl/Multisample.js index 89284983..4d1c91ea 100644 --- a/src/og/webgl/Multisample.js +++ b/src/og/webgl/Multisample.js @@ -7,7 +7,7 @@ /** * Class represents multisample framebuffer. * @class - * @param {webgl.Handler} handler - WebGL handler. + * @param {Handler} handler - WebGL handler. * @param {Object} [options] - Framebuffer options: * @param {number} [options.width] - Framebuffer width. Default is handler canvas width. * @param {number} [options.height] - Framebuffer height. Default is handler canvas height. @@ -24,7 +24,7 @@ export class Multisample { /** * WebGL handler. * @public - * @type {webgl.Handler} + * @type {Handler} */ this.handler = handler; @@ -193,7 +193,7 @@ export class Multisample { /** * Activate framebuffer frame to draw. * @public - * @returns {webgl.Framebuffer} Returns Current framebuffer. + * @returns {Framebuffer} Returns Current framebuffer. */ activate() { var gl = this.handler.gl; diff --git a/src/og/webgl/Program.js b/src/og/webgl/Program.js index dff9137a..773cc195 100644 --- a/src/og/webgl/Program.js +++ b/src/og/webgl/Program.js @@ -122,7 +122,7 @@ class Program { /** * Bind program buffer. * @function - * @param {webgl.Program} program - Used program. + * @param {Program} program - Used program. * @param {Object} variable - Variable represents buffer data. */ static bindBuffer(program, variable) { diff --git a/src/og/webgl/ProgramController.js b/src/og/webgl/ProgramController.js index 9694dae2..661053a8 100644 --- a/src/og/webgl/ProgramController.js +++ b/src/og/webgl/ProgramController.js @@ -1,3 +1,6 @@ +import { Handler } from "./Handler"; +import { Program } from "./Program"; + 'use strict'; /** @@ -5,24 +8,27 @@ * program capabilities, like switching program during the rendering. * Get access to the program from ...handler.programs. etc. * @class - * @param {webgl.Handler} handler - Handler. - * @param {webgl.Program} program - Shader program. */ export class ProgramController { + /** + * + * @param {Handler} handler - Handler. + * @param {Program} program - Shader program. + */ constructor(handler, program) { /** * Shader program. * @private - * @type {webgl.Program} + * @type {Program} */ this._program = program; /** * Handler. * @private - * @type {webgl.Handler} + * @type {Handler} */ this._handler = handler; @@ -45,7 +51,7 @@ export class ProgramController { /** * Returns controller's shader program. * @public - * @return {webgl.Program} - + * @return {Program} - */ getProgram() { return this._program; @@ -106,7 +112,7 @@ export class ProgramController { * Sets program uniforms and attributes values and return controller instance. * @public * @param {Object} params - Object with variable name and value like { value: 12, someArray:[1,2,3], uSampler: texture,... } - * @return {webgl.ProgramController} - + * @return {ProgramController} - */ set(params) { this.activate(); @@ -119,7 +125,7 @@ export class ProgramController { * @public * @param {number} mode - Gl draw mode * @param {WEBGLBuffer} buffer - Buffer to draw. - * @return {webgl.ProgramController} Returns current shader controller instance. + * @return {ProgramController} Returns current shader controller instance. */ drawIndexBuffer(mode, buffer) { this._program.drawIndexBuffer(mode, buffer); @@ -130,7 +136,7 @@ export class ProgramController { * Calls Gl drawArray function. * @param {number} mode - Gl draw mode. * @param {number} numItems - draw items count. - * @return {webgl.ProgramController} Returns current shader controller instance. + * @return {ProgramController} Returns current shader controller instance. */ drawArrays(mode, numItems) { this._program.drawArrays(mode, numItems); From 25070709a89dbb41c637396aa1eafd93c2b96e4b Mon Sep 17 00:00:00 2001 From: Thibaut Lassalle Date: Sun, 31 Oct 2021 15:18:56 -0700 Subject: [PATCH 11/27] no-unused-vars --- .eslintrc.js | 1 + 1 file changed, 1 insertion(+) diff --git a/.eslintrc.js b/.eslintrc.js index aa2a0b04..7b8a9048 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -10,5 +10,6 @@ module.exports = { "sourceType": "module" }, "rules": { + "no-unused-vars": false, } }; From dbde595e3b9bde30063690d051bbcb76fe757987 Mon Sep 17 00:00:00 2001 From: Thibaut Lassalle Date: Sun, 31 Oct 2021 15:20:15 -0700 Subject: [PATCH 12/27] no-unused-vars --- .eslintrc.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.eslintrc.js b/.eslintrc.js index 7b8a9048..e510aa84 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -10,6 +10,6 @@ module.exports = { "sourceType": "module" }, "rules": { - "no-unused-vars": false, + "no-unused-vars": 0, } }; From f7e83c5c4ba393e528593b46962a3a84d639e4b3 Mon Sep 17 00:00:00 2001 From: Thibaut Lassalle Date: Sun, 31 Oct 2021 15:21:28 -0700 Subject: [PATCH 13/27] fix eslint --- src/og/scene/Planet.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/og/scene/Planet.js b/src/og/scene/Planet.js index e0eb9eb9..5503b658 100644 --- a/src/og/scene/Planet.js +++ b/src/og/scene/Planet.js @@ -811,7 +811,7 @@ export class Planet extends RenderNode { this._quadTree.renderNode(true); this._normalMapCreator.drawSingle(this._quadTree.segment); - for (var i = 0; i < this._quadTree.nodes.length; i++) { + for (let i = 0; i < this._quadTree.nodes.length; i++) { this._quadTree.nodes[i].segment.createPlainSegment(); this._quadTree.nodes[i].renderNode(true); this._normalMapCreator.drawSingle(this._quadTree.nodes[i].segment); @@ -822,7 +822,7 @@ export class Planet extends RenderNode { this._quadTreeNorth.renderNode(true); this._normalMapCreator.drawSingle(this._quadTreeNorth.segment); - for (var i = 0; i < this._quadTreeNorth.nodes.length; i++) { + for (let i = 0; i < this._quadTreeNorth.nodes.length; i++) { this._quadTreeNorth.nodes[i].segment.createPlainSegment(); this._quadTreeNorth.nodes[i].renderNode(true); this._normalMapCreator.drawSingle(this._quadTreeNorth.nodes[i].segment); @@ -833,7 +833,7 @@ export class Planet extends RenderNode { this._quadTreeSouth.renderNode(true); this._normalMapCreator.drawSingle(this._quadTreeSouth.segment); - for (var i = 0; i < this._quadTreeSouth.nodes.length; i++) { + for (let i = 0; i < this._quadTreeSouth.nodes.length; i++) { this._quadTreeSouth.nodes[i].segment.createPlainSegment(); this._quadTreeSouth.nodes[i].renderNode(true); this._normalMapCreator.drawSingle(this._quadTreeSouth.nodes[i].segment); From e2f518931a3e4278487dabdf907560c03728faae Mon Sep 17 00:00:00 2001 From: Thibaut Lassalle Date: Sun, 31 Oct 2021 16:32:16 -0700 Subject: [PATCH 14/27] fix eslint --- src/og/Clock.js | 6 +++++- src/og/Events.js | 6 +++++- src/og/Globe.js | 4 ++++ src/og/ImageCanvas.js | 7 +++++-- src/og/LonLat.js | 6 +++--- src/og/Popup.js | 5 +++++ src/og/QueueArray.js | 5 +++++ src/og/Rectangle.js | 7 +++++++ src/og/Stack.js | 5 +++++ src/og/bv/Box.js | 5 +++++ src/og/camera/Camera.js | 4 ++++ src/og/camera/Frustum.js | 4 ++++ src/og/camera/PlanetCamera.js | 5 +++++ src/og/control/CompassButton.js | 5 +++++ src/og/control/Control.js | 4 ++++ src/og/control/DebugInfo.js | 4 ++++ src/og/control/EarthCoordinates.js | 4 ++++ src/og/ellipsoid/Ellipsoid.js | 4 ++++ src/og/entity/BillboardHandler.js | 4 ++++ src/og/entity/LabelHandler.js | 5 +++++ 20 files changed, 92 insertions(+), 7 deletions(-) diff --git a/src/og/Clock.js b/src/og/Clock.js index 71007c23..3de62c47 100644 --- a/src/og/Clock.js +++ b/src/og/Clock.js @@ -10,7 +10,7 @@ import * as jd from './astro/jd.js'; /** * Class represents application timer that stores custom current julian datetime, and time speed multiplier. * @class - * @param {Object} [params]: - Clock parameters: + * @param {Object} [params] - Clock parameters: * @param {number} [params.startDate=0.0] - Julian start date. * @param {number} [params.endDate=0.0] - Julian end date. * @param {number} [params.currentDate] - Julian current date. Default: current date. @@ -29,6 +29,10 @@ class Clock { this._counter = n; } + /** + * + * @param {Object} [params] - Clock parameters: + */ constructor(params) { params = params || {}; diff --git a/src/og/Events.js b/src/og/Events.js index 4d25ba8c..db3160a8 100644 --- a/src/og/Events.js +++ b/src/og/Events.js @@ -9,10 +9,14 @@ import { stamp, binaryInsert } from './utils/shared.js'; /** * Base events class to handle custom events. * @class - * @param {Array.} [eventNames] - Event names that could be dispatched. */ class Events { + /** + * + * @param {Array.} [eventNames] - Event names that could be dispatched. + * @param {*} sender + */ constructor(eventNames, sender) { /** * Registered event names. diff --git a/src/og/Globe.js b/src/og/Globe.js index b2f75e8a..9e46f60e 100644 --- a/src/og/Globe.js +++ b/src/og/Globe.js @@ -64,6 +64,10 @@ const PLANET_NAME_PREFIX = "globus_planet_"; */ class Globe { + + /** + * @param {*} options + */ constructor(options) { // Canvas creation var _canvasId = CANVAS_ID_PREFIX + Globe._staticCounter++; diff --git a/src/og/ImageCanvas.js b/src/og/ImageCanvas.js index 4bfa1ad6..6d76f196 100644 --- a/src/og/ImageCanvas.js +++ b/src/og/ImageCanvas.js @@ -7,10 +7,13 @@ /** * Usefull class for working with JS canvas object. * @class - * @param {number} [width] - Canvas width. Default 256. - * @param {number} [height] - Canvas height. Default 256. */ class ImageCanvas { + + /** + * @param {number} [width] - Canvas width. Default 256. + * @param {number} [height] - Canvas height. Default 256. + */ constructor(width, height) { /** * Canvas object. diff --git a/src/og/LonLat.js b/src/og/LonLat.js index cea6d279..02f79baf 100644 --- a/src/og/LonLat.js +++ b/src/og/LonLat.js @@ -22,9 +22,9 @@ const INV_PI_BY_180_HALF_PI = INV_PI_BY_180 * HALF_PI; export class LonLat { /** - * @param {number} [lon] - * @param {number} [lat] - * @param {number} [height] + * @param {number} [lon] - Longitude. + * @param {number} [lat] - Latitude. + * @param {number} [height] - Height over the surface. */ constructor(lon, lat, height) { diff --git a/src/og/Popup.js b/src/og/Popup.js index 0772bfc9..2d75b643 100644 --- a/src/og/Popup.js +++ b/src/og/Popup.js @@ -20,6 +20,11 @@ const TEMPLATE =
`; class Popup { + + /** + * + * @param {*} options + */ constructor(options) { this._id = Popup._staticCounter++; diff --git a/src/og/QueueArray.js b/src/og/QueueArray.js index 93456ce0..28c038b1 100644 --- a/src/og/QueueArray.js +++ b/src/og/QueueArray.js @@ -1,6 +1,11 @@ 'use strict'; class QueueArray { + + /** + * + * @param {number} [size] + */ constructor(size) { this._size = size || 2048; this._array = new Array(this._size); diff --git a/src/og/Rectangle.js b/src/og/Rectangle.js index 37d6fabe..288ea50a 100644 --- a/src/og/Rectangle.js +++ b/src/og/Rectangle.js @@ -9,6 +9,13 @@ * @param {number} [bottom] - Bottom coordinate. 0 - default. */ class Rectangle { + + /** + * @param {number} [left] - Left coordinate. 0 - default. + * @param {number} [top] - Top coordinate. 0 - default. + * @param {number} [right] - Right coordinate. 0 - default. + * @param {number} [bottom] - Bottom coordinate. 0 - default. + */ constructor(left, top, right, bottom) { /** diff --git a/src/og/Stack.js b/src/og/Stack.js index 23dbd99d..87b3a7c1 100644 --- a/src/og/Stack.js +++ b/src/og/Stack.js @@ -13,6 +13,11 @@ class Node { } class Stack { + + /** + * + * @param {number} [size] + */ constructor(size = 256) { this._current = new Node(); diff --git a/src/og/bv/Box.js b/src/og/bv/Box.js index 10c63ec0..6a562edc 100644 --- a/src/og/bv/Box.js +++ b/src/og/bv/Box.js @@ -11,6 +11,11 @@ import { Vec3 } from "../math/Vec3.js"; * @class */ class Box { + + /** + * + * @param {*} boundsArr + */ constructor(boundsArr) { /** * Vertices array. diff --git a/src/og/camera/Camera.js b/src/og/camera/Camera.js index 3780d89d..b84523e5 100644 --- a/src/og/camera/Camera.js +++ b/src/og/camera/Camera.js @@ -25,6 +25,10 @@ import { Mat4 } from "../math/Mat4.js"; * @fires og.Camera#viewchange */ class Camera { + /** + * @param {Renderer} [renderer] - Renderer uses the camera instance. + * @param {Object} [options] - Camera options: + */ constructor(renderer, options) { /** * Assigned renderer diff --git a/src/og/camera/Frustum.js b/src/og/camera/Frustum.js index 8111078e..bf4dc864 100644 --- a/src/og/camera/Frustum.js +++ b/src/og/camera/Frustum.js @@ -15,6 +15,10 @@ function planeNormalize(plane) { * @class */ class Frustum { + + /** + * @param {*} options + */ constructor(options = {}) { /** * Frustum planes. diff --git a/src/og/camera/PlanetCamera.js b/src/og/camera/PlanetCamera.js index 6b5ca623..ab420f96 100644 --- a/src/og/camera/PlanetCamera.js +++ b/src/og/camera/PlanetCamera.js @@ -31,6 +31,11 @@ import { Mat4 } from "../math/Mat4.js"; * @param {Vec3} [options.up] - Camera eye position. Default (0,1,0) */ class PlanetCamera extends Camera { + + /** + * @param {RenderNode} planet - Planet render node. + * @param {Object} [options] - Planet camera options: + */ constructor(planet, options) { super( planet.renderer, diff --git a/src/og/control/CompassButton.js b/src/og/control/CompassButton.js index c9a31e36..699b6b0e 100644 --- a/src/og/control/CompassButton.js +++ b/src/og/control/CompassButton.js @@ -86,6 +86,11 @@ let svg = ` * @params {Object} [options] - Control options. */ class CompassButton extends Control { + + /** + * + * @params {Object} [options] - Control options. + */ constructor(options) { super(options); diff --git a/src/og/control/Control.js b/src/og/control/Control.js index 9059fdac..e9183c1e 100644 --- a/src/og/control/Control.js +++ b/src/og/control/Control.js @@ -12,6 +12,10 @@ * @param {Boolean} [options.autoActivated=true] - If true - calls initialize function after the renderer assigning. */ class Control { + + /** + * @param {Object} [options] - Control activation options: + */ constructor(options) { options = options || {}; diff --git a/src/og/control/DebugInfo.js b/src/og/control/DebugInfo.js index c3f19ded..574214b5 100644 --- a/src/og/control/DebugInfo.js +++ b/src/og/control/DebugInfo.js @@ -13,6 +13,10 @@ import { Control } from "./Control.js"; * @param {Object} [options] - Control options. */ class DebugInfo extends Control { + + /** + * @param {Object} [options] - Control options. + */ constructor(options) { options = options || {}; if (!options.name || options.name === "") { diff --git a/src/og/control/EarthCoordinates.js b/src/og/control/EarthCoordinates.js index 400feffd..2395bd5d 100644 --- a/src/og/control/EarthCoordinates.js +++ b/src/og/control/EarthCoordinates.js @@ -54,6 +54,10 @@ const DisplayTypesConverters = [ * @param {Boolean} [options.type] - Coordinates shown: 0 - is decimal degrees, 1 - degrees, 2 - mercator geodetic coordinates. */ class EarthCoordinates extends Control { + /** + * + * @param {Object} [options] - Options: + */ constructor(options) { super(options); diff --git a/src/og/ellipsoid/Ellipsoid.js b/src/og/ellipsoid/Ellipsoid.js index dbc847ae..8f5b3d56 100644 --- a/src/og/ellipsoid/Ellipsoid.js +++ b/src/og/ellipsoid/Ellipsoid.js @@ -15,6 +15,10 @@ import { LonLat } from '../LonLat.js'; * @param {number} polarSize - Polar ellipsoid size. */ class Ellipsoid { + /** + * @param {number} equatorialSize - Equatorial ellipsoid size. + * @param {number} polarSize - Polar ellipsoid size. + */ constructor(equatorialSize, polarSize) { this._a = equatorialSize; this._b = polarSize; diff --git a/src/og/entity/BillboardHandler.js b/src/og/entity/BillboardHandler.js index 9de81f58..a7b78c9f 100644 --- a/src/og/entity/BillboardHandler.js +++ b/src/og/entity/BillboardHandler.js @@ -23,6 +23,10 @@ const ALIGNEDAXIS_BUFFER = 8; * */ class BillboardHandler { + /** + * + * @param {*} entityCollection + */ constructor(entityCollection) { /** diff --git a/src/og/entity/LabelHandler.js b/src/og/entity/LabelHandler.js index 4137e1e0..f381a644 100644 --- a/src/og/entity/LabelHandler.js +++ b/src/og/entity/LabelHandler.js @@ -30,6 +30,11 @@ window.dZ = 1.1; * */ class LabelHandler extends BillboardHandler { + /** + * + * @param {*} entityCollection + * @param {*} maxLetters + */ constructor(entityCollection, maxLetters = 21) { super(entityCollection); From 11e5de8e043f27ec134931ee30cd03a7705d3b57 Mon Sep 17 00:00:00 2001 From: Thibaut Lassalle Date: Sun, 31 Oct 2021 19:10:45 -0700 Subject: [PATCH 15/27] fix eslint --- src/og/camera/Camera.js | 2 +- src/og/layer/BaseGeoImage.js | 6 +++--- src/og/layer/CanvasTiles.js | 8 ++++---- src/og/layer/GeoImage.js | 4 ++-- src/og/layer/GeoVideo.js | 4 ++-- src/og/layer/Vector.js | 2 +- src/og/layer/XYZ.js | 8 ++++---- src/og/quadTree/Node.js | 2 +- src/og/terrain/EmptyTerrain.js | 2 +- src/og/terrain/GlobusTerrain.js | 8 ++++---- 10 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/og/camera/Camera.js b/src/og/camera/Camera.js index b84523e5..5e36b182 100644 --- a/src/og/camera/Camera.js +++ b/src/og/camera/Camera.js @@ -521,7 +521,7 @@ class Camera { * @param {boolean} isArc - If true camera up vector gets from current up vector every frame, * otherwise up is always input parameter. * @param {Vec3} center - Point that the camera rotates around - * @param {math.Vecto3} [up] - Camera up vector + * @param {Vecto3} [up] - Camera up vector */ rotateAround(angle, isArc, center, up) { center = center || Vec3.ZERO; diff --git a/src/og/layer/BaseGeoImage.js b/src/og/layer/BaseGeoImage.js index d01d1f31..523474e2 100644 --- a/src/og/layer/BaseGeoImage.js +++ b/src/og/layer/BaseGeoImage.js @@ -154,7 +154,7 @@ class BaseGeoImage extends Layer { /** * @virtual - * @param {planetSegment.Material} material - GeoImage material. + * @param {Material} material - GeoImage material. */ abortMaterialLoading(material) { this._creationProceeding = false; @@ -215,7 +215,7 @@ class BaseGeoImage extends Layer { /** * @virtual * @protected - * @param {planetSegment.Material} material - GeoImage material. + * @param {Material} material - GeoImage material. */ clearMaterial(material) { material.image = null; @@ -227,7 +227,7 @@ class BaseGeoImage extends Layer { /** * @virtual * @protected - * @param {planetSegment.Material} material - GeoImage material. + * @param {Material} material - GeoImage material. * @returns {Array } - */ applyMaterial(material) { diff --git a/src/og/layer/CanvasTiles.js b/src/og/layer/CanvasTiles.js index a761cc79..2cc81049 100644 --- a/src/og/layer/CanvasTiles.js +++ b/src/og/layer/CanvasTiles.js @@ -116,7 +116,7 @@ class CanvasTiles extends Layer { * Start to load tile material. * @public * @virtual - * @param {planetSegment.Material} material - + * @param {Material} material - */ loadMaterial(material) { var seg = material.segment; @@ -143,7 +143,7 @@ class CanvasTiles extends Layer { /** * Loads material image and apply it to the planet segment. * @protected - * @param {planetSegment.Material} material - Loads material image. + * @param {Material} material - Loads material image. */ _exec(material) { CanvasTiles.__requestsCounter++; @@ -153,7 +153,7 @@ class CanvasTiles extends Layer { /** * Tile custom draw function. * @callback og.layer.CanvasTiles~drawTileCallback - * @param {planetSegment.Material} material + * @param {Material} material * @param {applyCanvasCallback} applyCanvasCallback */ var e = that.events.load; @@ -186,7 +186,7 @@ class CanvasTiles extends Layer { /** * Abort exact material loading. * @public - * @param {planetSegment.Material} material - Segment material. + * @param {Material} material - Segment material. */ abortMaterialLoading(material) { if (material.isLoading && material.image) { diff --git a/src/og/layer/GeoImage.js b/src/og/layer/GeoImage.js index acce8db1..9c3ed7c3 100644 --- a/src/og/layer/GeoImage.js +++ b/src/og/layer/GeoImage.js @@ -84,7 +84,7 @@ class GeoImage extends BaseGeoImage { * Loads planet segment material. In this case - GeoImage source image. * @virtual * @public - * @param {planetSegment.Material} material - GeoImage planet material. + * @param {Material} material - GeoImage planet material. */ loadMaterial(material) { material.isLoading = true; @@ -114,7 +114,7 @@ class GeoImage extends BaseGeoImage { /** * @virtual - * @param {planetSegment.Material} material - GeoImage material. + * @param {Material} material - GeoImage material. */ abortMaterialLoading(material) { this._image && (this._image.src = ''); diff --git a/src/og/layer/GeoVideo.js b/src/og/layer/GeoVideo.js index 4e1ff819..55af3c0d 100644 --- a/src/og/layer/GeoVideo.js +++ b/src/og/layer/GeoVideo.js @@ -139,7 +139,7 @@ class GeoVideo extends BaseGeoImage { * Loads planet segment material. In this case - GeoImage source video. * @virtual * @public - * @param {planetSegment.Material} material - GeoImage planet material. + * @param {Material} material - GeoImage planet material. */ loadMaterial(material) { material.isLoading = true; @@ -177,7 +177,7 @@ class GeoVideo extends BaseGeoImage { /** * @virtual - * @param {planetSegment.Material} material - GeoImage material. + * @param {Material} material - GeoImage material. */ abortMaterialLoading(material) { this._video && (this._video.src = ""); diff --git a/src/og/layer/Vector.js b/src/og/layer/Vector.js index aac7df84..4ae5e652 100644 --- a/src/og/layer/Vector.js +++ b/src/og/layer/Vector.js @@ -845,7 +845,7 @@ class Vector extends Layer { /** * Abort exact material loading. * @public - * @param {planetSegment.Material} material - Segment material. + * @param {Material} material - Segment material. */ abortMaterialLoading(material) { material.isLoading = false; diff --git a/src/og/layer/XYZ.js b/src/og/layer/XYZ.js index 9e74384a..1d89690d 100644 --- a/src/og/layer/XYZ.js +++ b/src/og/layer/XYZ.js @@ -88,7 +88,7 @@ class XYZ extends Layer { * Rewrites imagery tile url query. * @private * @callback og.layer.XYZ~_urlRewriteCallback - * @param {planetSegment.Segment} segment - Segment to load. + * @param {Segment} segment - Segment to load. * @param {string} url - Created url. * @returns {string} - Url query string. */ @@ -143,7 +143,7 @@ class XYZ extends Layer { * Start to load tile material. * @public * @virtual - * @param {planetSegment.Material} material - Loads current material. + * @param {Material} material - Loads current material. */ loadMaterial(material, forceLoading) { @@ -197,7 +197,7 @@ class XYZ extends Layer { * Creates query url. * @protected * @virtual - * @param {planetSegment.Segment} segment - Creates specific url for current segment. + * @param {Segment} segment - Creates specific url for current segment. * @returns {String} - Returns url string. */ _createUrl(segment) { @@ -216,7 +216,7 @@ class XYZ extends Layer { /** * Returns actual url query string. * @protected - * @param {planetSegment.Segment} segment - Segment that loads image data. + * @param {Segment} segment - Segment that loads image data. * @returns {string} - Url string. */ _getHTTPRequestString(segment) { diff --git a/src/og/quadTree/Node.js b/src/og/quadTree/Node.js index cd04ccdd..97462188 100644 --- a/src/og/quadTree/Node.js +++ b/src/og/quadTree/Node.js @@ -55,7 +55,7 @@ let BOUNDS = { /** * Quad tree planet segment node. * @constructor - * @param {planetSegment.Segment|og.planetSegment.SegmentLonLat} segmentPrototype - Planet segment node constructor. + * @param {Segment|og.planetSegment.SegmentLonLat} segmentPrototype - Planet segment node constructor. * @param {RenderNode} planet - Planet render node. * @param {number} partId - NorthEast, SouthWest etc. * @param {quadTree.Node} parent - Parent of this node. diff --git a/src/og/terrain/EmptyTerrain.js b/src/og/terrain/EmptyTerrain.js index 9208b683..ff09a1e1 100644 --- a/src/og/terrain/EmptyTerrain.js +++ b/src/og/terrain/EmptyTerrain.js @@ -117,7 +117,7 @@ class EmptyTerrain { * Loads or creates segment elevation data. * @public * @virtual - * @param {planetSegment.Segment} segment - Segment to create elevation data. + * @param {Segment} segment - Segment to create elevation data. */ handleSegmentTerrain(segment) { segment.terrainIsLoading = false; diff --git a/src/og/terrain/GlobusTerrain.js b/src/og/terrain/GlobusTerrain.js index 728162a4..18bb2367 100644 --- a/src/og/terrain/GlobusTerrain.js +++ b/src/og/terrain/GlobusTerrain.js @@ -139,7 +139,7 @@ class GlobusTerrain extends EmptyTerrain { * Rewrites elevation storage url query. * @private * @callback og.terrain.GlobusTerrain~_urlRewriteCallback - * @param {planetSegment.Segment} segment - Segment to load. + * @param {Segment} segment - Segment to load. * @param {string} url - Created url. * @returns {string} - Url query string. */ @@ -400,7 +400,7 @@ class GlobusTerrain extends EmptyTerrain { * Creates query url. * @protected * @virtual - * @param {planetSegment.Segment} segment - + * @param {Segment} segment - * @returns {string} - */ _createUrl(segment) { @@ -414,7 +414,7 @@ class GlobusTerrain extends EmptyTerrain { /** * Returns actual url query string. * @protected - * @param {planetSegment.Segment} segment - Segment that loads image data. + * @param {Segment} segment - Segment that loads image data. * @returns {string} - Url string. */ _getHTTPRequestString(segment) { @@ -445,7 +445,7 @@ class GlobusTerrain extends EmptyTerrain { /** * @protected - * @param {planetSegment.Segment} segment - + * @param {Segment} segment - * @param {*} data - */ _applyElevationsData(segment, elevations) { From 86b27a68ad5d7889a08e1faae4613c03e7a8a268 Mon Sep 17 00:00:00 2001 From: Thibaut Lassalle Date: Tue, 2 Nov 2021 09:09:20 -0700 Subject: [PATCH 16/27] better type --- src/og/Events.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/og/Events.js b/src/og/Events.js index db3160a8..b820186b 100644 --- a/src/og/Events.js +++ b/src/og/Events.js @@ -15,7 +15,7 @@ class Events { /** * * @param {Array.} [eventNames] - Event names that could be dispatched. - * @param {*} sender + * @param {*} [sender] */ constructor(eventNames, sender) { /** From 4e748d17c555cbaea569af6cac01d3c2a3f2ea05 Mon Sep 17 00:00:00 2001 From: Thibaut Lassalle Date: Tue, 2 Nov 2021 10:39:49 -0700 Subject: [PATCH 17/27] better type --- src/og/renderer/RendererEvents.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/og/renderer/RendererEvents.js b/src/og/renderer/RendererEvents.js index f7174e28..51037a42 100644 --- a/src/og/renderer/RendererEvents.js +++ b/src/og/renderer/RendererEvents.js @@ -190,6 +190,9 @@ class RendererEvents extends Events { this._dblTchCoords = new Vec2(); this._oneTouchStart = false; this._dblTchBegins = 0; + /** + * @type {number} + */ this._mousestopThread = null; this._ldblClkBegins = 0; this._rdblClkBegins = 0; From daa432b82d787a9516000abe9238658ecba2a450 Mon Sep 17 00:00:00 2001 From: Thibaut Lassalle Date: Tue, 2 Nov 2021 11:22:17 -0700 Subject: [PATCH 18/27] remove old internet explorer code --- src/og/ajax.js | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/src/og/ajax.js b/src/og/ajax.js index 63f72fb2..cbe8ec81 100644 --- a/src/og/ajax.js +++ b/src/og/ajax.js @@ -88,24 +88,6 @@ const defaultParams = { responseType: "text" }; -function createXMLHttp() { - var xhr = null; - if (typeof XMLHttpRequest != "undefined") { - xhr = new XMLHttpRequest(); - return xhr; - } else if (window.ActiveXObject) { - var ieXMLHttpVersions = ['MSXML2.XMLHttp.5.0', 'MSXML2.XMLHttp.4.0', 'MSXML2.XMLHttp.3.0', 'MSXML2.XMLHttp', 'Microsoft.XMLHttp']; - for (var i = 0; i < ieXMLHttpVersions.length; i++) { - try { - xhr = new ActiveXObject(ieXMLHttpVersions[i]); - return xhr; - } catch (e) { - throw new Error('og.ajax.createXMLHttp creation failed.'); - } - } - } -} - /** * Send an ajax request. * @function @@ -137,7 +119,7 @@ ajax.request = function (url, params) { p.data = params.data; - var xhr = createXMLHttp(); + var xhr = new XMLHttpRequest(); var customXhr = new Xhr(xhr); From bf03a4df85bcecedc3b9f1a15427acf67165c32e Mon Sep 17 00:00:00 2001 From: Zemledelec Date: Wed, 3 Nov 2021 20:55:37 +0300 Subject: [PATCH 19/27] fixed eslint --- .eslintrc.js | 20 +- sandbox/osm/osm.js | 497 +++-------------------------- src/og/astro/astro.js | 10 +- src/og/astro/jd.js | 41 +-- src/og/astro/orbit.js | 24 +- src/og/astro/rotation.js | 25 +- src/og/control/EarthCoordinates.js | 81 +++-- src/og/entity/BaseBillboard.js | 30 +- src/og/entity/Entity.js | 54 ++-- src/og/entity/Geometry.js | 47 +-- src/og/entity/LabelHandler.js | 8 +- src/og/entity/index.js | 24 +- src/og/math.js | 14 +- src/og/math/Mat4.js | 268 ++++++++++++---- src/og/math/Quat.js | 199 +++++++----- src/og/math/Vec4.js | 52 ++- src/og/segment/Segment.js | 5 +- src/og/utils/polylabel.js | 176 ---------- src/og/webgl/Framebuffer.js | 122 ++++--- src/og/webgl/ProgramController.js | 14 +- src/og/webgl/callbacks.js | 12 +- 21 files changed, 705 insertions(+), 1018 deletions(-) delete mode 100644 src/og/utils/polylabel.js diff --git a/.eslintrc.js b/.eslintrc.js index e510aa84..5b224256 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,15 +1,17 @@ module.exports = { - "env": { - "browser": true, - "jest": true, - "es2021": true + env: { + browser: true, + jest: true, + es2021: true }, - "extends": "eslint:recommended", - "parserOptions": { - "ecmaVersion": 13, - "sourceType": "module" + extends: "eslint:recommended", + parserOptions: { + ecmaVersion: 13, + sourceType: "module" }, - "rules": { + rules: { "no-unused-vars": 0, + "no-useless-escape": 0, + "no-loss-of-precision": 0 } }; diff --git a/sandbox/osm/osm.js b/sandbox/osm/osm.js index 20d14a19..3ed8fca5 100644 --- a/sandbox/osm/osm.js +++ b/sandbox/osm/osm.js @@ -1,110 +1,24 @@ -//'use strict'; - -//import { Globe } from '../../src/og/Globe.js'; -//import { GlobusTerrain } from '../../src/og/terrain/GlobusTerrain.js'; -//import { BilTerrain } from '../../src/og/terrain/BilTerrain.js'; -//import { MapboxTerrain } from '../../src/og/terrain/MapboxTerrain.js'; -//import { EmptyTerrain } from '../../src/og/terrain/EmptyTerrain.js'; -//import { XYZ } from '../../src/og/layer/XYZ.js'; -//import { WMS } from '../../src/og/layer/WMS.js'; +import { Globe } from "../../src/og/Globe.js"; +import { Entity } from "../../src/og/entity/Entity.js"; +import { XYZ } from "../../src/og/layer/XYZ.js"; import { CanvasTiles } from "../../src/og/layer/CanvasTiles.js"; -//import { Vector } from '../../src/og/layer/Vector.js'; -//import { Entity } from '../../src/og/entity/Entity.js'; -import { DebugInfo } from "../../src/og/control/DebugInfo.js"; -//import { KeyboardNavigation } from '../../src/og/control/KeyboardNavigation.js'; -import { ToggleWireframe } from "../../src/og/control/ToggleWireframe.js"; -//import * as math from '../../src/og/math.js'; -//import { LayerSwitcher } from '../../src/og/control/LayerSwitcher.js'; -//import { Popup } from '../../src/og/Popup.js'; -import { LonLat } from "../../src/og/LonLat.js"; -//import { Vec3 } from '../../src/og/math/Vec3.js'; -//import { ScaleControl } from '../../src/og/control/ScaleControl.js'; -//import { stringTemplate } from '../../src/og/utils/shared.js'; -//import { SegmentBoundVisualization } from '../../src/og/control/SegmentBoundVisualization.js'; - -//function toQuadKey(x, y, z) { -// var index = ''; -// for (var i = z; i > 0; i--) { -// var b = 0; -// var mask = 1 << (i - 1); -// if ((x & mask) !== 0) b++; -// if ((y & mask) !== 0) b += 2; -// index += b.toString(); -// } -// return index; -//}; - -//let bing = new XYZ("sat", { -// shininess: 20, -// isBaseLayer: false, -// subdomains: ['t0', 't1', 't2', 't3'], -// url: "https://ecn.{s}.tiles.virtualearth.net/tiles/a{quad}.jpeg?n=z&g=7146", -// visibility: true, -// attribution: `Bing`, -// maxNativeZoom: 19, -// defaultTextures: [{ color: "#001522" }, { color: "#E4E6F3" }], -// urlRewrite: function (s, u) { -// return stringTemplate(u, { -// 's': this._getSubdomain(), -// 'quad': toQuadKey(s.tileX, s.tileY, s.tileZoom) -// }); -// } -//}); - -//// document.getElementById("ambient-r").addEventListener("input", function (e) { -//// osm.ambient.x = this.value; -//// document.querySelector(".value.ambient-r").innerHTML = this.value; -//// }); -//// document.getElementById("ambient-g").addEventListener("input", function (e) { -//// osm.ambient.y = this.value; -//// document.querySelector(".value.ambient-g").innerHTML = this.value; -//// }); -//// document.getElementById("ambient-b").addEventListener("input", function (e) { -//// osm.ambient.z = this.value; -//// document.querySelector(".value.ambient-b").innerHTML = this.value; -//// }); - -//// document.getElementById("diffuse-r").addEventListener("input", function (e) { -//// osm.diffuse.x = this.value; -//// document.querySelector(".value.diffuse-r").innerHTML = this.value; -//// }); -//// document.getElementById("diffuse-g").addEventListener("input", function (e) { -//// osm.diffuse.y = this.value; -//// document.querySelector(".value.diffuse-g").innerHTML = this.value; -//// }); -//// document.getElementById("diffuse-b").addEventListener("input", function (e) { -//// osm.diffuse.z = this.value; -//// document.querySelector(".value.diffuse-b").innerHTML = this.value; -//// }); - -//// document.getElementById("specular-r").addEventListener("input", function (e) { -//// osm.specular.x = this.value; -//// document.querySelector(".value.specular-r").innerHTML = this.value; -//// }); -//// document.getElementById("specular-g").addEventListener("input", function (e) { -//// osm.specular.y = this.value; -//// document.querySelector(".value.specular-g").innerHTML = this.value; -//// }); -//// document.getElementById("specular-b").addEventListener("input", function (e) { -//// osm.specular.z = this.value; -//// document.querySelector(".value.specular-b").innerHTML = this.value; -//// }); - -//// document.getElementById("shininess").addEventListener("input", function (e) { -//// osm.shininess = this.value; -//// document.querySelector(".value.shininess").innerHTML = this.value; -//// }); - -let cnv = document.createElement("canvas"); -let ctx = cnv.getContext("2d"); -cnv.width = 256; -cnv.height = 256; +import { Vector } from "../../src/og/layer/Vector.js"; +import { GlobusTerrain } from "../../src/og/terrain/GlobusTerrain.js"; +import { EmptyTerrain } from "../../src/og/terrain/EmptyTerrain.js"; +import { labelXYZ } from "./labelXYZ.js"; const tg = new CanvasTiles("Tile grid", { visibility: true, isBaseLayer: false, - zIndex: 100, drawTile: function (material, applyCanvas) { + // + // This is important create canvas here! + // + let cnv = document.createElement("canvas"); + let ctx = cnv.getContext("2d"); + cnv.width = 256; + cnv.height = 256; + //Clear canvas ctx.clearRect(0, 0, cnv.width, cnv.height); @@ -117,276 +31,44 @@ const tg = new CanvasTiles("Tile grid", { let size; - //Draw text - if (material.segment.tileZoom > 17) { - size = "18"; - } else if (material.segment.tileZoom > 14) { - size = "26"; + if (material.segment.isPole) { + let ext = material.segment.getExtentLonLat(); + + ctx.fillStyle = "black"; + ctx.fillRect(0, 0, 256, 256); + //ctx.font = 'normal ' + 29 + 'px Verdana'; + //ctx.textAlign = 'center'; + //ctx.fillText(`${ext.northEast.lon.toFixed(3)} ${ext.northEast.lat.toFixed(3)}`, cnv.width / 2, cnv.height / 2 + 20); + //ctx.fillText(`${ext.southWest.lon.toFixed(3)} ${ext.southWest.lat.toFixed(3)}`, cnv.width / 2, cnv.height / 2 - 20); } else { - size = "32"; + ctx.fillRect(0, 0, 256, 256); + //Draw text + // if (material.segment.tileZoom > 14) { + // size = "26"; + // } else { + // size = "32"; + // } + // ctx.fillStyle = 'black'; + // ctx.font = 'normal ' + size + 'px Verdana'; + // ctx.textAlign = 'center'; + // ctx.fillText(material.segment.tileX + "," + material.segment.tileY + "," + material.segment.tileZoom, cnv.width / 2, cnv.height / 2); } - ctx.fillStyle = "black"; - ctx.font = "normal " + size + "px Verdana"; - ctx.textAlign = "center"; - ctx.fillText( - material.segment.tileX + "," + material.segment.tileY + "," + material.segment.tileZoom, - cnv.width / 2, - cnv.height / 2 - ); //Draw canvas tile applyCanvas(cnv); } }); -//let osm = new XYZ("OSM", { -// 'isBaseLayer': true, -// 'url': "//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", -// 'visibility': true, -// 'attribution': 'Data @ OpenStreetMap contributors, ODbL' -//}); - -////let wien = new XYZ("512", { -//// 'isBaseLayer': true, -//// 'url': "//maps.wien.gv.at/basemap/bmaphidpi/normal/google3857/{z}/{y}/{x}.jpeg", -//// 'visibility': false -////}); - -////let sat = new XYZ("MapQuest Satellite", { -//// shininess: 20, -//// specular: [0.00048, 0.00037, 0.00035], -//// diffuse: [0.88, 0.85, 0.8], -//// ambient: [0.15, 0.1, 0.23], -//// isBaseLayer: true, -//// url: "//api.mapbox.com/styles/v1/mapbox/satellite-v9/tiles/256/{z}/{x}/{y}@2x?access_token=pk.eyJ1IjoibWdldmxpY2hzY2FuZXgiLCJhIjoiY2pwcGdsaXlnMDQzdDQybXhsOWZlbXBvdSJ9.fR2YE-ehJA4iajaJBAPKvw", -//// visibility: false, -//// attribution: `@2014 MapQuest - Portions @2014 "Map data @ -//// OpenStreetMap and contributors, -//// CC-BY-SA"` -////}); - -//let sat = new XYZ("Google Satellite", { -// shininess: 20, -// specular: [0.00048, 0.00037, 0.00035], -// diffuse: [0.88, 0.85, 0.8], -// ambient: [0.15, 0.1, 0.23], -// isBaseLayer: true, -// url: "https://khms1.googleapis.com/kh?v=894&hl=en-GB&x={x}&y={y}&z={z}", -// visibility: false, -// attribution: `` -//}); - -//let thames = new XYZ("Reconstructed Lakebed", { -// fading: true, -// isBaseLayer: false, -// visibility: true, -// url: "http://alacst.ddns.net:8181/Tiles/1xoverlay/{z}/{x}/{y}.png", -// // extent: [[-1.1210868226, 51.5993282113], [-1.11506810397, 51.6072360341]] -// extent: [[-1.12047, 51.60076], [-1.11807, 51.60285]] -//}); - -//let emptyTerrain = new EmptyTerrain(), -// globusTerrain = new GlobusTerrain(), -// mapboxTerrain = new MapboxTerrain(), -// bilTerrain = new BilTerrain({ -// maxZoom: 19, -// url: "//127.0.0.1:8080/geoserver/", -// //url: "//95.211.82.211:8080/geoserver/og/", -// //layers: "og:n44_e009_1arc_v3", -// layers: "test:geotiff_coverage_2", -// //layers: "arizona:3", -// //imageSize: 129, -// gridSizeByZoom: [64, 16, 16, 16, 16, 16, 16, 16, 16, 16, 32, 16, 32, 16, 32, 16, 32, 16, 32, 16, 8, 4], -// //extent: [[8.9, 44.0], [10.0, 45]] -// }); - -//window.globe = new Globe({ -// 'name': "Earth", -// 'target': "earth", -// 'terrain': /*bilTerrain/*/globusTerrain/*new MapboxTerrain(null, { -// url: "//alacst.ddns.net:8181/Tiles/testtile129/{z}/{x}/{y}.png", -// //url: "//alacst.ddns.net:8181/Tiles/129terrain/{z}/{x}/{y}.png", -// minZoom: 9, -// maxZoom: 23, -// gridSizeByZoom: [64, 32, 32, 16, 16, 16, 16, 32, 64, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 64, 32, 16], -// sourceImageSize: 129, -// equalizeVertices: false -// })*/, -// 'layers': [osm, tg, sat], -// 'viewExtent': [89.83484, 25.69255, 90.34796, 26.44652] -//}); - -//window.setEmptyTerrain = function () { -// window.globe.planet.setTerrain(emptyTerrain); -//}; - -//window.setOpenglobusTerrain = function () { -// window.globe.planet.setTerrain(globusTerrain); -//}; - -//window.setBilTerrain = function () { -// window.globe.planet.setTerrain(bilTerrain); -//}; - -//window.setMapboxTerrain = function () { -// window.globe.planet.setTerrain(mapboxTerrain); -//}; - -////window.globe = new Globe({ -//// 'name': "Earth", -//// 'target': "earth", -//// 'terrain': new GlobusTerrain(), -//// 'layers': [osm, sat, tg, states, modis], -//// 'viewExtent': [7.86, 44.24, 11.29, 45.0] -////}); - -////window.globe = new Globe({ -//// target: "earth", -//// name: "Bil Terrain Source", -//// terrain: new BilTerrain({ -//// url: "//95.211.82.211:8080/geoserver/og/", -//// layers: "og:n44_e009_1arc_v3", -//// imageSize: 128, -//// gridSizeByZoom: [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 64, 64, 32, 32, 32, 16, 8], -//// extent: [[8.9, 44.0], [10.0, 45]] -//// }), -//// viewExtent: [7.86, 44.24, 11.29, 45.0], -//// layers: [osm, sat, tg, states, modis] -////}); - -////globe.planet.addControl(new SegmentBoundVisualization()); -//globe.planet.addControl(new KeyboardNavigation()); -//globe.planet.addControl(new LayerSwitcher()); -////globe.planet.addControl(new ScaleControl()); - -//let e1 = new Entity({ -// 'name': 'strip1', -// 'strip': { -// 'color': [0 / 255, 38 / 255, 255 / 255], -// 'opacity': 0.27, -// 'path': [ -// [[586523.0151173624, 4392830.957760274, 4570544.574074627], [587043.0890180465, 4396726.110503412, 4574597.306676116]], -// [[693687.4135420445, 4446600.854589337, 4502800.243641092], [694306.9328021071, 4450572.030680254, 4506821.6103556845]], -// [[695057.6327224943, 4446368.161289945, 4502875.06522507], [695283.9105581088, 4447815.688108607, 4504340.988014539]], -// [[695379.6262299116, 4446451.841945512, 4502776.850023308], [695603.3364033864, 4447882.307370998, 4504225.435734251]] -// ], -// } -//}); - -//let e2 = new Entity({ -// 'name': 'strip2', -// 'strip': { -// 'color': [0 / 255, 38 / 255, 255 / 255], -// 'opacity': 0.27, -// 'path': [ -// [[661936.3048841777, 4745603.382222995, 4189411.525681237], [1339051.734436527, 9600030.082993329, 8474892.113242555]], -// [[1126928.1072783293, 4760811.647727539, 4071007.90108061], [2277324.752646721, 9620768.297494425, 8226795.481871399]] -// ], -// } -//}); - -//let stripLayer = new Vector("test layer", { -// 'entities': [e1, e2], -// 'pickingEnabled': true, -// 'visibility': true -//}); - -//globe.planet.addLayer(stripLayer); - -////new Vector("Markers", { -//// clampToGround: false, -//// polygonOffsetUnits: 0 -////}) -//// .addTo(globe.planet) -//// .add(new Entity({ -//// lonlat: [5.73, 45.183, 273.5], -//// label: { -//// text: "Hi, Globus!", -//// outline: 0.77, -//// outlineColor: "rgba(255,255,255,.4)", -//// size: 27, -//// color: "black", -//// face: "Lucida Console", -//// offset: [10, -2] -//// }, -//// billboard: { -//// src: "./marker.png", -//// width: 64, -//// height: 64, -//// offset: [0, 32] -//// } -//// })); - -////globe.planet.viewExtentArr([-1.13284, 51.59951, -1.10951, 51.60386]); - -////let myPopup = new Popup({ -//// planet: globe.planet, -//// content: `Simple HTML popup
See popup example`, -//// offset: [0, 0], -//// lonLat: [5.73, 45.183, 273.5], -//// visibility: true -////}); - -////window.myPopup = myPopup; - -////globe.planet.viewLonLat(new LonLat(-112.99778159686288, 37.23755430287543, 8952.673764926381)); - -////import { Globe } from '../../src/og/Globe.js'; -////import { XYZ } from '../../src/og/layer/XYZ.js'; -////import { GlobusTerrain } from '../../src/og/terrain/GlobusTerrain.js'; -////import { Vec3 } from '../../src/og/math/Vec3.js'; -////import { LonLat } from '../../src/og/LonLat.js'; -////import { Vector } from '../../src/og/layer/Vector.js'; -////import { Entity } from '../../src/og/entity/Entity.js'; -////import { wgs84 } from '../../src/og/ellipsoid/wgs84.js'; - -////var osm = new XYZ("OpenStreetMap", { -//// isBaseLayer: true, -//// url: "//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", -//// visibility: true, -//// attribution: 'Data @ OpenStreetMap contributors, ODbL' -////}); - -////let size = 1000000; -////let ellipsoid = wgs84; -////let startlonlat = new LonLat(51.5, 7, 0); -////let endlonlat = new LonLat(51.5, 7, 1000); -////let startPos = ellipsoid.lonLatToCartesian(startlonlat); -////let endPos = ellipsoid.lonLatToCartesian(endlonlat); - -////let e = new Entity({ -//// 'ray': { -//// 'startPosition': startPos, -//// 'endPosition': endPos, -//// 'length': size, -//// 'startColor': "red", -//// 'endColor': "green", -//// 'thickness': 10 -//// } -////}); - -////let rayLayer = new Vector("rays", { -//// 'polygonOffsetUnits': 0 -////}); - -////rayLayer.add(e); - -////var globus = new Globe({ -//// "target": "earth", -//// "name": "Earth", -//// "terrain": new GlobusTerrain(), -//// "layers": [osm, rayLayer], -//// "sun": { -//// "active": true -//// } -////}); - -import { Globe } from "../../src/og/Globe.js"; -import { Entity } from "../../src/og/entity/Entity.js"; -import { XYZ } from "../../src/og/layer/XYZ.js"; -import { Vector } from "../../src/og/layer/Vector.js"; -import { GlobusTerrain } from "../../src/og/terrain/GlobusTerrain.js"; -import { EmptyTerrain } from "../../src/og/terrain/EmptyTerrain.js"; +const labelLayer = new labelXYZ("labelLayer", { + isBaseLayer: false, + visibility: true, + // zIndex: GlobeConst.labelZIndex, + url: "//t.ssl.ak.dynamic.tiles.virtualearth.net/comp/ch/{key}?mkt=en-us&it=Z%2CGF%2CL&shading=hill&og=1471&n=z&ur=JP&js=1&cstl=in&st=me|lv:0_pp|lv:1_cr|lv:1_ad|lv:1&nvlos=1&vpt=e,p&pll=1&ell=1", + countryLayerData: "//assets.msn.com/weathermapdata/1/static/3d/label.0.1/country-{}.json", + height: 16, + size: 11.5, + color: "white" +}); var osm = new XYZ("OpenStreetMap", { isBaseLayer: true, @@ -398,87 +80,14 @@ var osm = new XYZ("OpenStreetMap", { var globus = new Globe({ target: "earth", name: "Earth", - terrain: /*new EmptyTerrain({ - gridSizeByZoom: [32, 16, 16, 8, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2] - }),/*/ new GlobusTerrain(), - useEarthNavigation: true, - layers: [osm /*, tg*/] - //'viewExtent': [-1.12135, 51.60133, -1.11704, 51.60224] + maxAltitude: 15000000, + minAltitude: 4200000, + terrain: new EmptyTerrain({ + gridSizeByZoom: [32, 32, 32, 32, 16, 8, 8] + }), + layers: [labelLayer, tg], + useNightTexture: false, + useSpecularTexture: false }); -fetch("./szint.json") - .then((r) => { - return r.json(); - }) - .then((data) => { - var countries = new Vector("Countries", { - visibility: true, - isBaseLayer: false, - diffuse: [0, 0, 0], - ambient: [1, 1, 1] - }); - - countries.addTo(globus.planet); - - var f = data.features; - for (var i = 0; i < f.length; i++) { - var fi = f[i]; - countries.add( - new Entity({ - geometry: { - type: fi.geometry.type, - coordinates: fi.geometry.coordinates, - style: { - fillColor: "rgba(255,255,0,1.0)", - lineColor: "rgba(255,255,0,1.0)" - } - } - }) - ); - } - - //countries.events.on("mouseleave", function (e) { - // e.pickingObject.geometry.setFillColor(1, 1, 1, 0.6); - // e.pickingObject.geometry.setLineColor(0.2, 0.6, 0.8, 1.0); - //}); - //countries.events.on("mouseenter", function (e) { - // e.pickingObject.geometry.bringToFront(); - // e.pickingObject.geometry.setFillColor(1, 0, 0, 0.4); - // e.pickingObject.geometry.setLineColor(1, 0, 0, 1.0); - //}); - //countries.events.on("lclick", function (e) { - // globus.planet.flyExtent(e.pickingObject.geometry.getExtent()); - //}); - //countries.events.on("touchstart", function (e) { - // globus.planet.flyExtent(e.pickingObject.geometry.getExtent()); - //}); - }); - -globus.planet.addControl( - new DebugInfo({ - watch: [ - { - label: "metersInMinSize", - frame: () => globus.planet.renderer.controls.scaleControl._metersInMinSize - }, - { - label: "meters in pixel", - frame: () => globus.planet.renderer.controls.scaleControl._mPx - } - ] - }) -); - -//setTimeout(() => { -//globus.planet.camera.setLonLat(new LonLat(10, 10, 4500000)); -//}, 1000); - -//globus.planet.camera.update() - -globus.planet.addControl( - new ToggleWireframe({ - isActive: false - }) -); - window.globus = globus; diff --git a/src/og/astro/astro.js b/src/og/astro/astro.js index f902562a..7fecbd25 100644 --- a/src/og/astro/astro.js +++ b/src/og/astro/astro.js @@ -1,6 +1,6 @@ -'use strict'; +"use strict"; -import * as jd from './jd.js'; +import * as jd from "./jd.js"; /** * Angle between J2000 mean equator and the ecliptic plane. @@ -16,7 +16,7 @@ export const J2000_OBLIQUITY = 23.4392911; * @const * @type{Number} */ -export const AU_TO_METERS = 1.49597870e+11; +export const AU_TO_METERS = 1.4959787e11; /** * Terestrial and atomic time difference. @@ -45,7 +45,7 @@ export const SUN_GRAVITATIONAL_PARAMETER = 1.32712440018e20; * @returns {Number} - returns barycentric dynamical time. */ export function TAItoTDB(tai) { - tai += og.astro.TDT_TAI * jd.ONE_BY_SECONDS_PER_DAY; + tai += TDT_TAI * jd.ONE_BY_SECONDS_PER_DAY; var g = 6.239996 + 0.0172019696544 * (tai - jd.J2000); return tai + 0.001658 * Math.sin(g + 1.671e-2 * Math.sin(g)) * jd.ONE_BY_SECONDS_PER_DAY; -} \ No newline at end of file +} diff --git a/src/og/astro/jd.js b/src/og/astro/jd.js index c3c04382..279a7207 100644 --- a/src/og/astro/jd.js +++ b/src/og/astro/jd.js @@ -2,9 +2,9 @@ * @module og/astro/jd */ -'use strict'; +"use strict"; -import { binarySearch } from '../utils/shared.js'; +import { binarySearch } from "../utils/shared.js"; /** * Seconds in millisecond. @@ -172,8 +172,13 @@ export function T(jd) { export function getDayNumber(year, month, day) { var a = ((month - 14) / 12) | 0; var b = year + 4800 + a; - return (((1461 * b) / 4) | 0) + (((367 * (month - 2 - 12 * a)) / 12) | 0) - - (((3 * (((b + 100) / 100) | 0)) / 4) | 0) + day - 32075; + return ( + (((1461 * b) / 4) | 0) + + (((367 * (month - 2 - 12 * a)) / 12) | 0) - + (((3 * (((b + 100) / 100) | 0)) / 4) | 0) + + day - + 32075 + ); } /** @@ -190,7 +195,8 @@ export function DateToUTC(date) { } var secondsOfDay = - date.getUTCSeconds() + hour * SECONDS_PER_HOUR + + date.getUTCSeconds() + + hour * SECONDS_PER_HOUR + date.getUTCMinutes() * SECONDS_PER_MINUTE + date.getUTCMilliseconds() * SECONDS_PER_MILLISECOND; @@ -198,7 +204,7 @@ export function DateToUTC(date) { dayNumber--; } - var extraDays = secondsOfDay * ONE_BY_SECONDS_PER_DAY | 0; + var extraDays = (secondsOfDay * ONE_BY_SECONDS_PER_DAY) | 0; dayNumber += extraDays; secondsOfDay -= SECONDS_PER_DAY * extraDays; @@ -300,7 +306,7 @@ export function UTCtoDate(utc) { } var L = (julianDayNumber + 68569) | 0; - var N = (4 * L / 146097) | 0; + var N = ((4 * L) / 146097) | 0; L = (L - (((146097 * N + 3) / 4) | 0)) | 0; var I = ((4000 * (L + 1)) / 1461001) | 0; L = (L - (((1461 * I) / 4) | 0) + 31) | 0; @@ -310,12 +316,12 @@ export function UTCtoDate(utc) { var month = (J + 2 - 12 * L) | 0; var year = (100 * (N - 49) + I + L) | 0; - var hour = secondsOfDay * ONE_BY_SECONDS_PER_HOUR | 0; + var hour = (secondsOfDay * ONE_BY_SECONDS_PER_HOUR) | 0; var remainingSeconds = secondsOfDay - hour * SECONDS_PER_HOUR; - var minute = remainingSeconds * ONE_BY_SECONDS_PER_MINUTE | 0; + var minute = (remainingSeconds * ONE_BY_SECONDS_PER_MINUTE) | 0; remainingSeconds = remainingSeconds - minute * SECONDS_PER_MINUTE; var second = remainingSeconds | 0; - var millisecond = (remainingSeconds - second) * MILLISECONDS_PER_SECOND | 0; + var millisecond = ((remainingSeconds - second) * MILLISECONDS_PER_SECOND) | 0; hour += 12; if (hour > 23) { @@ -331,11 +337,10 @@ export function UTCtoDate(utc) { * @returns {Date} JavaScript Date object */ export function TAItoDate(tai) { - var utc = TAItoUTC(tai); if (!utc) { utc = TAItoUTC(addSeconds(tai, -1)); - og.console.logWrn("TAItoDate:336 - can't conv utc."); + console.warn("TAItoDate:336 - can't conv utc."); } return UTCtoDate(utc); @@ -399,7 +404,7 @@ export function addDays(jd, days) { export function getMilliseconds(jd) { var s = jd - (jd | 0); s *= SECONDS_PER_DAY; - return (s - (s | 0)) * MILLISECONDS_PER_SECOND | 0; + return ((s - (s | 0)) * MILLISECONDS_PER_SECOND) | 0; } /** @@ -421,12 +426,12 @@ export function getHours(jd) { var julianDayNumber = jd | 0; var secondsOfDay = (jd - julianDayNumber) * SECONDS_PER_DAY; - var hour = secondsOfDay * ONE_BY_SECONDS_PER_HOUR | 0; + var hour = (secondsOfDay * ONE_BY_SECONDS_PER_HOUR) | 0; var remainingSeconds = secondsOfDay - hour * SECONDS_PER_HOUR; - var minute = remainingSeconds * ONE_BY_SECONDS_PER_MINUTE | 0; + var minute = (remainingSeconds * ONE_BY_SECONDS_PER_MINUTE) | 0; remainingSeconds = remainingSeconds - minute * SECONDS_PER_MINUTE; var second = remainingSeconds | 0; - var millisecond = (remainingSeconds - second) * MILLISECONDS_PER_SECOND | 0; + var millisecond = ((remainingSeconds - second) * MILLISECONDS_PER_SECOND) | 0; hour += 12 + minute / 60 + second / 3600 + millisecond / 1000; if (hour > 23) { @@ -443,7 +448,7 @@ export function getHours(jd) { */ export function getMinutes(jd) { var s = jd - (jd | 0); - return s * MINUTES_PER_DAY | 0; + return (s * MINUTES_PER_DAY) | 0; } /** @@ -507,7 +512,7 @@ const leapSecondsTable = [ __ls(2453736.5, 33.0), // 2006-01-01T00:00:00.000Z __ls(2454832.5, 34.0), // 2009-01-01T00:00:00.000Z __ls(2456109.5, 35.0), // 2012-07-01T00:00:00.000Z - __ls(2457204.5, 36.0) // 2015-07-01T00:00:00.000Z + __ls(2457204.5, 36.0) // 2015-07-01T00:00:00.000Z ]; export const J2000TAI = UTCtoTAI(J2000); diff --git a/src/og/astro/orbit.js b/src/og/astro/orbit.js index 77655830..fc2d230d 100644 --- a/src/og/astro/orbit.js +++ b/src/og/astro/orbit.js @@ -2,10 +2,10 @@ * @module og/astro/orbit */ -'use strict'; +"use strict"; -import * as math from '../math.js'; -import { Mat3 } from '../math/Mat3.js'; +import * as math from "../math.js"; +import { Mat3 } from "../math/Mat3.js"; export function getEccentricAnomaly(M, ecc) { if (ecc == 0.0) { @@ -22,14 +22,14 @@ export function getEccentricAnomaly(M, ecc) { // Extremely stable Laguerre-Conway method for solving Kepler's // equation. Only use this for high-eccentricity orbits, as it // requires more calcuation. - let E = M + 0.85 * ecc * sign(sin(M)); + let E = M + 0.85 * ecc * Math.sign(Math.sin(M)); return math.solve_iteration_fixed(solveKeplerLaguerreConway(ecc, M), E, 8); } else if (ecc == 1.0) { // TODO: Parabolic orbit return M; } else { // Laguerre-Conway method for hyperbolic (ecc > 1) orbits. - let E = log(2 * M / ecc + 1.85); + let E = Math.log((2 * M) / ecc + 1.85); return math.solve_iteration_fixed(solveKeplerLaguerreConwayHyp(ecc, M), E, 30); } } @@ -57,7 +57,7 @@ function solveKeplerLaguerreConway(ecc, M) { var f = x - s - M; var f1 = 1 - c; var f2 = s; - x += -5 * f / (f1 + Math.sign(f1) * Math.sqrt(abs(16 * f1 * f1 - 20 * f * f2))); + x += (-5 * f) / (f1 + Math.sign(f1) * Math.sqrt(Math.abs(16 * f1 * f1 - 20 * f * f2))); return x; }; } @@ -69,7 +69,7 @@ function solveKeplerLaguerreConwayHyp(ecc, M) { var f = s - x - M; var f1 = c - 1; var f2 = s; - x += -5 * f / (f1 + Math.sign(f1) * Math.sqrt(Math.abs(16 * f1 * f1 - 20 * f * f2))); + x += (-5 * f) / (f1 + Math.sign(f1) * Math.sqrt(Math.abs(16 * f1 * f1 - 20 * f * f2))); return x; }; } @@ -77,7 +77,7 @@ function solveKeplerLaguerreConwayHyp(ecc, M) { export function getEllipticalEccentricAnomaly(meanAnomaly, eccentricity) { var tol = 0.00000001745; var iterations = 20; - var e = meanAnomaly - 2.0 * Math.PI * (meanAnomaly / (2.0 * Math.PI) | 0); + var e = meanAnomaly - 2.0 * Math.PI * ((meanAnomaly / (2.0 * Math.PI)) | 0); var err = 1; while (Math.abs(err) > tol && iterations > 0) { err = e - eccentricity * Math.sin(e) - meanAnomaly; @@ -91,8 +91,10 @@ export function getEllipticalEccentricAnomaly(meanAnomaly, eccentricity) { export function getTrueAnomaly(eccentricAnomaly, eccentricity) { var revs = Math.floor(eccentricAnomaly / math.TWO_PI); eccentricAnomaly -= revs * math.TWO_PI; - var trueAnomaly = Math.atan2(Math.sin(eccentricAnomaly) * Math.sqrt(1 - eccentricity * eccentricity), - Math.cos(eccentricAnomaly) - eccentricity); + var trueAnomaly = Math.atan2( + Math.sin(eccentricAnomaly) * Math.sqrt(1 - eccentricity * eccentricity), + Math.cos(eccentricAnomaly) - eccentricity + ); trueAnomaly = math.zeroTwoPI(trueAnomaly); if (eccentricAnomaly < 0) { trueAnomaly -= math.TWO_PI; @@ -118,4 +120,4 @@ export function getPerifocalToCartesianMatrix(argumentOfPeriapsis, inclination, res._m[7] = -cosraan * sini; res._m[8] = cosi; return res; -} \ No newline at end of file +} diff --git a/src/og/astro/rotation.js b/src/og/astro/rotation.js index 11dd3627..40d6e60a 100644 --- a/src/og/astro/rotation.js +++ b/src/og/astro/rotation.js @@ -2,20 +2,29 @@ * @module og/astro/rotation */ -'use strict'; +"use strict"; -export function getRotationMatrix(rightAscension, declination) { - xAxis.x = Math.cos(rightAscension + og.math.PI_TWO); - xAxis.y = Math.sin(rightAscension + og.math.PI_TWO); +import { Vec3 } from "../math/Vec3.js"; +import { Mat3 } from "../math/Mat3.js"; +import { PI_TWO } from "../math.js"; + +export function getRotationMatrix(rightAscension, declination, res) { + let xAxis = new Vec3(), + zAxis = new Vec3(); + + res = res || new Mat3(); + + xAxis.x = Math.cos(rightAscension + PI_TWO); + xAxis.y = Math.sin(rightAscension + PI_TWO); xAxis.z = 0.0; - var cosDec = Math.cos(declination); + let cosDec = Math.cos(declination); zAxis.x = cosDec * Math.cos(rightAscension); zAxis.y = cosDec * Math.sin(rightAscension); zAxis.z = Math.sin(declination); - var yAxis = zAxis.cross(xAxis); + let yAxis = zAxis.cross(xAxis); res._m[0] = xAxis.x; res._m[1] = yAxis.x; @@ -27,5 +36,5 @@ export function getRotationMatrix(rightAscension, declination) { res._m[7] = yAxis.z; res._m[8] = zAxis.z; - return result; -} \ No newline at end of file + return res; +} diff --git a/src/og/control/EarthCoordinates.js b/src/og/control/EarthCoordinates.js index 2395bd5d..9240ecaf 100644 --- a/src/og/control/EarthCoordinates.js +++ b/src/og/control/EarthCoordinates.js @@ -2,26 +2,31 @@ * @module og/control/EarthCoordinates */ -'use strict'; +"use strict"; -import { Control } from './Control.js'; +import { Control } from "./Control.js"; function dec2deg(base) { var t; var degrees = base < 0 ? Math.ceil(base) : Math.floor(base); - var minutes = Math.floor(t = Math.abs((base - degrees)) * 60); + var minutes = Math.floor((t = Math.abs(base - degrees) * 60)); var seconds = Math.floor((t - minutes) * 6000); - seconds = seconds / 100.00; - return (numToFixedString(degrees, 3) + "\u00B0" + - numToFixedString(minutes, 2) + "\u0027" + - numToFixedString(seconds.toFixed(2), 2) + "\u0022"); + seconds = seconds / 100.0; + return ( + numToFixedString(degrees, 3) + + "\u00B0" + + numToFixedString(minutes, 2) + + "\u0027" + + numToFixedString(seconds.toFixed(2), 2) + + "\u0022" + ); } function numToFixedString(num, fixed) { - var dl = num.toString().split('.')[0].length; + var dl = num.toString().split(".")[0].length; var white = " "; for (var i = dl; i < fixed; i++) { - white += '  '; + white += "  "; } return white + num.toString(); } @@ -39,11 +44,7 @@ function toMercator(ll) { return m.lat.toFixed(5) + ", " + m.lon.toFixed(5); } -const DisplayTypesConverters = [ - toDecimal, - toDegrees, - toMercator -]; +const DisplayTypesConverters = [toDecimal, toDegrees, toMercator]; /** * Control displays mouse or screen center Earth coordinates. @@ -55,7 +56,7 @@ const DisplayTypesConverters = [ */ class EarthCoordinates extends Control { /** - * + * * @param {Object} [options] - Options: */ constructor(options) { @@ -91,12 +92,18 @@ class EarthCoordinates extends Control { */ var pad = false; - if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) { + if ( + /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test( + navigator.userAgent + ) + ) { pad = true; } this._center = options.center || pad; + this._centerDiv = null; + /** * Current position. * @public @@ -106,12 +113,11 @@ class EarthCoordinates extends Control { } oninit() { - this._display = document.createElement('div'); - this._display.className = 'ogEarthCoordinatesControl'; + this._display = document.createElement("div"); + this._display.className = "ogEarthCoordinatesControl"; var that = this; function _refresh(el) { - if (that._displayType >= DisplayTypesConverters.length) { that._displayType = 0; } @@ -136,19 +142,19 @@ class EarthCoordinates extends Control { _refresh(this._display); - let centerDiv = document.createElement('div'); - centerDiv.className = 'ogCenterIcon'; - centerDiv.innerHTML = ''; - this.renderer.div.appendChild(centerDiv); + this._centerDiv = document.createElement("div"); + this._centerDiv.className = "ogCenterIcon"; + this._centerDiv.innerHTML = + ''; + this.renderer.div.appendChild(this._centerDiv); if (this._center) { this.renderer.activeCamera.events.on("moveend", this._grabCoordinates, this); - centerDiv.style.display = "block"; + this._centerDiv.style.display = "block"; } else { this.renderer.events.on("mousemove", this._onMouseMove, this); - centerDiv.style.display = "none"; + this._centerDiv.style.display = "none"; } - } /** @@ -162,19 +168,28 @@ class EarthCoordinates extends Control { if (center) { this.renderer.events.off("mousemove", this._onMouseMove); this.renderer.activeCamera.events.on("moveend", this._grabCoordinates, this); - centerDiv.style.display = "block"; + this._centerDiv.style.display = "block"; } else { this.renderer.events.off("draw", this._draw); this.renderer.events.on("mousemove", this._onMouseMove, this); - centerDiv.style.display = "none"; + this._centerDiv.style.display = "none"; } } } _showPosition() { if (this.position) { - this.position.height = ((this.position.height > 10000 || this.position.height < -10000) ? 0 : this.position.height); - this._display.innerHTML = "Lat/Lon: " + this._converter(this.position) + " h(m): " + (this.position.height > 0 ? "~" + (Math.round(this.position.height) / 1000).toFixed(3) * 1000 : "-"); + this.position.height = + this.position.height > 10000 || this.position.height < -10000 + ? 0 + : this.position.height; + this._display.innerHTML = + "Lat/Lon: " + + this._converter(this.position) + + " h(m): " + + (this.position.height > 0 + ? "~" + (Math.round(this.position.height) / 1000).toFixed(3) * 1000 + : "-"); } else { this._display.innerHTML = "Lat/Lon: " + "_____________________"; } @@ -189,9 +204,11 @@ class EarthCoordinates extends Control { _onMouseMove() { var r = this.renderer; var ms = r.events.mouseState; - if (!(ms.leftButtonDown || ms.rightButtonDown) && + if ( + !(ms.leftButtonDown || ms.rightButtonDown) && r.controlsBag.scaleRot <= 0 && - !r.activeCamera._flying) { + !r.activeCamera._flying + ) { this.position = this.planet.getLonLatFromPixelTerrain(ms, true); this._showPosition(); } diff --git a/src/og/entity/BaseBillboard.js b/src/og/entity/BaseBillboard.js index 516560c2..42cbf895 100644 --- a/src/og/entity/BaseBillboard.js +++ b/src/og/entity/BaseBillboard.js @@ -2,10 +2,10 @@ * @module og/entity/BaseBillboard */ -'use strict'; +"use strict"; -import * as utils from '../utils/shared.js'; -import { Vec3 } from '../math/Vec3.js'; +import * as utils from "../utils/shared.js"; +import { Vec3 } from "../math/Vec3.js"; /** * Base prototype for billboard and label classes. @@ -38,9 +38,9 @@ class BaseBillboard { this._position = utils.createVector3(options.position); this._positionHigh = new Vec3(); - + this._positionLow = new Vec3(); - + Vec3.doubleToTwoFloats(this._position, this._positionHigh, this._positionLow); /** @@ -121,9 +121,10 @@ class BaseBillboard { setPosition(x, y, z) { this._position.x = x; this._position.y = y; - this._position.z = z; - Vec3.doubleToTwoFloats(position, this._positionHigh, this._positionLow); - this._handler && this._handler.setPositionArr(this._handlerIndex, this._positionHigh, this._positionLow); + this._position.z = z; + Vec3.doubleToTwoFloats(this._position, this._positionHigh, this._positionLow); + this._handler && + this._handler.setPositionArr(this._handlerIndex, this._positionHigh, this._positionLow); } /** @@ -136,7 +137,8 @@ class BaseBillboard { this._position.y = position.y; this._position.z = position.z; Vec3.doubleToTwoFloats(position, this._positionHigh, this._positionLow); - this._handler && this._handler.setPositionArr(this._handlerIndex, this._positionHigh, this._positionLow); + this._handler && + this._handler.setPositionArr(this._handlerIndex, this._positionHigh, this._positionLow); } /** @@ -158,7 +160,7 @@ class BaseBillboard { setOffset(x, y, z) { this._offset.x = x; this._offset.y = y; - (z != undefined) && (this._offset.z = z); + z != undefined && (this._offset.z = z); this._handler && this._handler.setOffsetArr(this._handlerIndex, this._offset); } @@ -170,7 +172,7 @@ class BaseBillboard { setOffset3v(offset) { this._offset.x = offset.x; this._offset.y = offset.y; - (offset.z != undefined) && (this._offset.z = offset.z); + offset.z != undefined && (this._offset.z = offset.z); this._handler && this._handler.setOffsetArr(this._handlerIndex, offset); } @@ -224,7 +226,7 @@ class BaseBillboard { this._color.x = r; this._color.y = g; this._color.z = b; - (a != undefined) && (this._color.w = a); + a != undefined && (this._color.w = a); this._handler && this._handler.setRgbaArr(this._handlerIndex, this._color); } @@ -237,7 +239,7 @@ class BaseBillboard { this._color.x = color.x; this._color.y = color.y; this._color.z = color.z; - (color.w != undefined) && (this._color.w = color.w); + color.w != undefined && (this._color.w = color.w); this._handler && this._handler.setRgbaArr(this._handlerIndex, color); } @@ -332,4 +334,4 @@ class BaseBillboard { } } -export { BaseBillboard }; \ No newline at end of file +export { BaseBillboard }; diff --git a/src/og/entity/Entity.js b/src/og/entity/Entity.js index 315f7d7c..b6f36a1c 100644 --- a/src/og/entity/Entity.js +++ b/src/og/entity/Entity.js @@ -2,21 +2,21 @@ * @module og/entity/Entity */ -'use strict'; +"use strict"; -import * as mercator from '../mercator.js'; -import * as utils from '../utils/shared.js'; -import { Billboard } from './Billboard.js'; -import { Strip } from './Strip.js'; -import { Extent } from '../Extent.js'; -import { Geometry } from './Geometry.js'; -import { Label } from './Label.js'; -import { LonLat } from '../LonLat.js'; -import { Polyline } from './Polyline.js'; -import { Ray } from './Ray.js'; -import { PointCloud } from './PointCloud.js'; -import { Sphere } from '../shapes/Sphere.js'; -import { Vec3 } from '../math/Vec3.js'; +import * as mercator from "../mercator.js"; +import * as utils from "../utils/shared.js"; +import { Billboard } from "./Billboard.js"; +import { Strip } from "./Strip.js"; +import { Extent } from "../Extent.js"; +import { Geometry } from "./Geometry.js"; +import { Label } from "./Label.js"; +import { LonLat } from "../LonLat.js"; +import { Polyline } from "./Polyline.js"; +import { Ray } from "./Ray.js"; +import { PointCloud } from "./PointCloud.js"; +import { Sphere } from "../shapes/Sphere.js"; +import { Vec3 } from "../math/Vec3.js"; /** * Entity instances aggregate multiple forms of visualization into a single high-level object. @@ -41,7 +41,6 @@ import { Vec3 } from '../math/Vec3.js'; */ class Entity { constructor(options) { - options = options || {}; options.properties = options.properties || {}; @@ -168,56 +167,56 @@ class Entity { * @public * @type {Billboard} */ - this.billboard = this._createOptionFeature('billboard', options.billboard); + this.billboard = this._createOptionFeature("billboard", options.billboard); /** * Text label entity. * @public * @type {Label} */ - this.label = this._createOptionFeature('label', options.label); + this.label = this._createOptionFeature("label", options.label); /** * Shape entity. * @public * @type {shape.BaseShape} */ - this.shape = this._createOptionFeature('sphere', options.sphere || options.box); + this.shape = this._createOptionFeature("sphere", options.sphere || options.box); /** * Polyline entity. * @public * @type {Polyline} */ - this.polyline = this._createOptionFeature('polyline', options.polyline); + this.polyline = this._createOptionFeature("polyline", options.polyline); /** * Ray entity. * @public * @type {ray} */ - this.ray = this._createOptionFeature('ray', options.ray); + this.ray = this._createOptionFeature("ray", options.ray); /** * PointCloud entity. * @public * @type {PointCloud} */ - this.pointCloud = this._createOptionFeature('pointCloud', options.pointCloud); + this.pointCloud = this._createOptionFeature("pointCloud", options.pointCloud); /** * Geometry entity(available for vector layer only). * @public * @type {Geometry} */ - this.geometry = this._createOptionFeature('geometry', options.geometry); + this.geometry = this._createOptionFeature("geometry", options.geometry); /** * Strip entity. * @public * @type {Strip} */ - this.strip = this._createOptionFeature('strip', options.strip); + this.strip = this._createOptionFeature("strip", options.strip); } static get _staticCounter() { @@ -325,7 +324,6 @@ class Entity { * @param {number} z - 3d space Z - position. */ setCartesian(x, y, z) { - var p = this._cartesian; p.x = x; @@ -348,7 +346,6 @@ class Entity { var ec = this._entityCollection; if (ec && ec.renderNode && ec.renderNode.ellipsoid) { - this._lonlat = ec.renderNode.ellipsoid.cartesianToLonLat(p); if (Math.abs(this._lonlat.lat) < mercator.MAX_LAT) { @@ -368,7 +365,6 @@ class Entity { * @param {boolean} skipLonLat - skip geodetic calculation. */ _setCartesian3vSilent(cartesian, skipLonLat) { - var p = this._cartesian; p.x = cartesian.x; @@ -385,13 +381,12 @@ class Entity { this.shape && this.shape.setPosition3v(p); for (var i = 0; i < this.childrenNodes.length; i++) { - this.childrenNodes[i].setCartesian(x, y, z); + this.childrenNodes[i].setCartesian(p.x, p.y, p.z); } var ec = this._entityCollection; if (!skipLonLat && ec && ec.renderNode && ec.renderNode.ellipsoid) { - this._lonlat = ec.renderNode.ellipsoid.cartesianToLonLat(p); if (Math.abs(this._lonlat.lat) < mercator.MAX_LAT) { @@ -425,7 +420,6 @@ class Entity { var ec = this._entityCollection; if (ec && ec.renderNode && ec.renderNode.ellipsoid) { - if (Math.abs(lonlat.lat) < mercator.MAX_LAT) { this._lonlatMerc = lonlat.forwardMercator(); } else { @@ -613,6 +607,7 @@ class Entity { } else if (this._entityCollection) { return this._entityCollection.events; } + return null; } /** @@ -633,7 +628,6 @@ class Entity { * @public */ setPickingColor() { - var c = this._pickingColor; // billboard diff --git a/src/og/entity/Geometry.js b/src/og/entity/Geometry.js index a3037726..75b19995 100644 --- a/src/og/entity/Geometry.js +++ b/src/og/entity/Geometry.js @@ -2,12 +2,12 @@ * @module og/entity/Geometry */ -'use strict'; +"use strict"; -import * as utils from '../utils/shared.js'; -import { Extent } from '../Extent.js'; -import { Vec4 } from '../math/Vec4.js'; -import { LonLat } from '../LonLat.js'; +import * as utils from "../utils/shared.js"; +import { Extent } from "../Extent.js"; +import { Vec4 } from "../math/Vec4.js"; +import { LonLat } from "../LonLat.js"; const GeometryType = { POINT: 1, @@ -58,15 +58,27 @@ class Geometry { this._type = (options.type && Geometry.getType(options.type)) || GeometryType.POINT; this._coordinates = []; - this._extent = Geometry.getExtent({ - type: options.type || "Point", - coordinates: options.coordinates || [] - }, this._coordinates); + this._extent = Geometry.getExtent( + { + type: options.type || "Point", + coordinates: options.coordinates || [] + }, + this._coordinates + ); this._style = options.style || {}; - this._style.fillColor = utils.createColorRGBA(options.style.fillColor, new Vec4(0.19, 0.62, 0.85, 0.4)); - this._style.lineColor = utils.createColorRGBA(options.style.lineColor, new Vec4(0.19, 0.62, 0.85, 1)); - this._style.strokeColor = utils.createColorRGBA(options.style.strokeColor, new Vec4(1, 1, 1, 0.95)); + this._style.fillColor = utils.createColorRGBA( + options.style.fillColor, + new Vec4(0.19, 0.62, 0.85, 0.4) + ); + this._style.lineColor = utils.createColorRGBA( + options.style.lineColor, + new Vec4(0.19, 0.62, 0.85, 1) + ); + this._style.strokeColor = utils.createColorRGBA( + options.style.strokeColor, + new Vec4(1, 1, 1, 0.95) + ); this._style.lineWidth = options.style.lineWidth || 3; this._style.strokeWidth = options.style.strokeWidth || 0; @@ -110,9 +122,7 @@ class Geometry { res.northEast.lon = lon; res.northEast.lat = lat; outCoordinates && (outCoordinates[0] = lon) && (outCoordinates[1] = lat); - } else if (t === GeometryType.LINESTRING) { - let c = geometryObj.coordinates; for (let i = 0; i < c.length; i++) { let lon = c[i][0], @@ -123,9 +133,7 @@ class Geometry { if (lat > res.northEast.lat) res.northEast.lat = lat; outCoordinates && (outCoordinates[i] = [lon, lat]); } - } else if (t === GeometryType.POLYGON) { - let c = geometryObj.coordinates; for (let i = 0; i < c.length; i++) { let ci = c[i]; @@ -141,9 +149,7 @@ class Geometry { outCoordinates && (outCoordinates[i][j] = [lon, lat]); } } - } else if (t === GeometryType.MULTIPOLYGON) { - let p = geometryObj.coordinates; for (let i = 0; i < p.length; i++) { let pi = p[i]; @@ -163,9 +169,7 @@ class Geometry { } } } - } else if (t === GeometryType.MULTILINESTRING) { - let c = geometryObj.coordinates; for (let i = 0; i < c.length; i++) { let ci = c[i]; @@ -181,10 +185,9 @@ class Geometry { outCoordinates && (outCoordinates[i][j] = [lon, lat]); } } - } else { res.southWest.lon = res.southWest.lat = res.northEast.lon = res.northEast.lat = 0.0; - outCoordinates && (outCoordinates[0] = lon) && (outCoordinates[1] = lat); + outCoordinates && (outCoordinates[0] = 0) && (outCoordinates[1] = 0); } return res; } diff --git a/src/og/entity/LabelHandler.js b/src/og/entity/LabelHandler.js index f381a644..ee804374 100644 --- a/src/og/entity/LabelHandler.js +++ b/src/og/entity/LabelHandler.js @@ -31,9 +31,9 @@ window.dZ = 1.1; */ class LabelHandler extends BillboardHandler { /** - * - * @param {*} entityCollection - * @param {*} maxLetters + * + * @param {*} entityCollection + * @param {*} maxLetters */ constructor(entityCollection, maxLetters = 21) { super(entityCollection); @@ -1156,8 +1156,6 @@ class LabelHandler extends BillboardHandler { } setFontIndexArr(index, fontIndex) { - fontIndex = fontIndex; - var i = index * 6 * this._maxLetters; var a = this._fontIndexArr; diff --git a/src/og/entity/index.js b/src/og/entity/index.js index dd3fd119..05f3f22b 100644 --- a/src/og/entity/index.js +++ b/src/og/entity/index.js @@ -1,17 +1,9 @@ -import { Entity } from './Entity'; -import { EntityCollection } from './EntityCollection'; -import { Billboard } from './Billboard'; -import { Geometry } from './Geometry'; -import { Label } from './Label'; -import { PointCloud } from './PointCloud'; -import { Polyline } from './Polyline'; +import { Entity } from "./Entity.js"; +import { EntityCollection } from "./EntityCollection.js"; +import { Billboard } from "./Billboard.js"; +import { Geometry } from "./Geometry.js"; +import { Label } from "./Label.js"; +import { PointCloud } from "./PointCloud.js"; +import { Polyline } from "./Polyline.js"; -export { - Entity, - EntityCollection, - Billboard, - Geometry, - Label, - PointCloud, - Polyline -}; \ No newline at end of file +export { Entity, EntityCollection, Billboard, Geometry, Label, PointCloud, Polyline }; diff --git a/src/og/math.js b/src/og/math.js index 61c132d3..0b588a79 100644 --- a/src/og/math.js +++ b/src/og/math.js @@ -77,7 +77,7 @@ export const EPSILON20 = 1e-20; * @param {number} base - Base value. * @returns {number} - * @example - * og.math.log(64, 2) + * log(64, 2) * //returns 6 */ export function log(n, base) { @@ -92,7 +92,7 @@ export function log(n, base) { * @param {number} max - Maximal edge. * @returns {number} - * @example - * og.math.clamp(12, 1, 5) + * clamp(12, 1, 5) * //returns 5 */ export function clamp(number, min, max) { @@ -200,9 +200,9 @@ export function mod(m, n) { * @returns {number} - */ export function zeroTwoPI(a) { - var mod = og.math.mod(a, og.math.TWO_PI); - if (Math.abs(mod) < og.math.EPSILON14 && Math.abs(a) > og.math.EPSILON14) { - return og.math.TWO_PI; + var mod = mod(a, TWO_PI); + if (Math.abs(mod) < EPSILON14 && Math.abs(a) > EPSILON14) { + return TWO_PI; } return mod; } @@ -235,7 +235,7 @@ export function frac(x) { * @returns {number} - */ export function log2(x) { - return Math.log(x) / og.math.LOG2; + return Math.log(x) / LOG2; } /** @@ -346,7 +346,7 @@ export function norm_lon(lon) { * @returns {number} - */ export function negativePItoPI(a) { - return og.math.zeroTwoPI(a + Math.PI) - Math.PI; + return zeroTwoPI(a + Math.PI) - Math.PI; } /** diff --git a/src/og/math/Mat4.js b/src/og/math/Mat4.js index 4fedafee..3edfdb8d 100644 --- a/src/og/math/Mat4.js +++ b/src/og/math/Mat4.js @@ -1,9 +1,9 @@ -'use strict'; +"use strict"; -import { Mat3 } from './Mat3.js'; -import { Quat } from './Quat.js'; -import { Vec3 } from './Vec3.js'; -import { Vec4 } from './Vec4.js'; +import { Mat3 } from "./Mat3.js"; +import { Quat } from "./Quat.js"; +import { Vec3 } from "./Vec3.js"; +import { Vec4 } from "./Vec4.js"; /** * Class represents a 4x4 matrix. @@ -18,7 +18,7 @@ export class Mat4 { */ this._m = new Array(16); } - + /** * Returns identity matrix instance. * @static @@ -26,10 +26,22 @@ export class Mat4 { */ static get identity() { var res = new Mat4(); - res._m[0] = 1; res._m[1] = 0; res._m[2] = 0; res._m[3] = 0; - res._m[4] = 0; res._m[5] = 1; res._m[6] = 0; res._m[7] = 0; - res._m[8] = 0; res._m[9] = 0; res._m[10] = 1; res._m[11] = 0; - res._m[12] = 0; res._m[13] = 0; res._m[14] = 0; res._m[15] = 1; + res._m[0] = 1; + res._m[1] = 0; + res._m[2] = 0; + res._m[3] = 0; + res._m[4] = 0; + res._m[5] = 1; + res._m[6] = 0; + res._m[7] = 0; + res._m[8] = 0; + res._m[9] = 0; + res._m[10] = 1; + res._m[11] = 0; + res._m[12] = 0; + res._m[13] = 0; + res._m[14] = 0; + res._m[15] = 1; return res; } @@ -107,7 +119,9 @@ export class Mat4 { * @returns {Vec3} - */ mulVec3(p) { - var d = p.x, e = p.y, g = p.z; + var d = p.x, + e = p.y, + g = p.z; return new Vec3( this._m[0] * d + this._m[4] * e + this._m[8] * g + this._m[12], this._m[1] * d + this._m[5] * e + this._m[9] * g + this._m[13], @@ -122,7 +136,10 @@ export class Mat4 { * @returns {Vec4} - */ mulVec4(p) { - var d = p.x, e = p.y, g = p.z, f = p.w; + var d = p.x, + e = p.y, + g = p.z, + f = p.w; return new Vec4( this._m[0] * d + this._m[4] * e + this._m[8] * g + this._m[12] * f, this._m[1] * d + this._m[5] * e + this._m[9] * g + this._m[13] * f, @@ -138,9 +155,15 @@ export class Mat4 { */ toInverseMatrix3() { var a = this._m; - var c = a[0], d = a[1], e = a[2], - g = a[4], f = a[5], h = a[6], - i = a[8], j = a[9], k = a[10], + var c = a[0], + d = a[1], + e = a[2], + g = a[4], + f = a[5], + h = a[6], + i = a[8], + j = a[9], + k = a[10], l = k * f - h * j, o = -k * g + h * i, m = j * g - f * i, @@ -171,10 +194,22 @@ export class Mat4 { * @returns {Mat4} - */ inverseTo(res) { - var c = this._m[0], d = this._m[1], e = this._m[2], g = this._m[3], - f = this._m[4], h = this._m[5], i = this._m[6], j = this._m[7], - k = this._m[8], l = this._m[9], o = this._m[10], m = this._m[11], - n = this._m[12], p = this._m[13], r = this._m[14], s = this._m[15], + var c = this._m[0], + d = this._m[1], + e = this._m[2], + g = this._m[3], + f = this._m[4], + h = this._m[5], + i = this._m[6], + j = this._m[7], + k = this._m[8], + l = this._m[9], + o = this._m[10], + m = this._m[11], + n = this._m[12], + p = this._m[13], + r = this._m[14], + s = this._m[15], A = c * h - d * f, B = c * i - e * f, t = c * j - g * f, @@ -187,13 +222,26 @@ export class Mat4 { C = l * r - o * p, D = l * s - m * p, E = o * s - m * r, - q = 1 / (A * E - B * D + t * C + u * z - v * y + w * x), - res = res || new Mat4(); + q = 1 / (A * E - B * D + t * C + u * z - v * y + w * x); - res._m[0] = (h * E - i * D + j * C) * q; res._m[1] = (-d * E + e * D - g * C) * q; res._m[2] = (p * w - r * v + s * u) * q; res._m[3] = (-l * w + o * v - m * u) * q; - res._m[4] = (-f * E + i * z - j * y) * q; res._m[5] = (c * E - e * z + g * y) * q; res._m[6] = (-n * w + r * t - s * B) * q; res._m[7] = (k * w - o * t + m * B) * q; - res._m[8] = (f * D - h * z + j * x) * q; res._m[9] = (-c * D + d * z - g * x) * q; res._m[10] = (n * v - p * t + s * A) * q; res._m[11] = (-k * v + l * t - m * A) * q; - res._m[12] = (-f * C + h * y - i * x) * q; res._m[13] = (c * C - d * y + e * x) * q; res._m[14] = (-n * u + p * B - r * A) * q; res._m[15] = (k * u - l * B + o * A) * q; + res = res || new Mat4(); + + res._m[0] = (h * E - i * D + j * C) * q; + res._m[1] = (-d * E + e * D - g * C) * q; + res._m[2] = (p * w - r * v + s * u) * q; + res._m[3] = (-l * w + o * v - m * u) * q; + res._m[4] = (-f * E + i * z - j * y) * q; + res._m[5] = (c * E - e * z + g * y) * q; + res._m[6] = (-n * w + r * t - s * B) * q; + res._m[7] = (k * w - o * t + m * B) * q; + res._m[8] = (f * D - h * z + j * x) * q; + res._m[9] = (-c * D + d * z - g * x) * q; + res._m[10] = (n * v - p * t + s * A) * q; + res._m[11] = (-k * v + l * t - m * A) * q; + res._m[12] = (-f * C + h * y - i * x) * q; + res._m[13] = (c * C - d * y + e * x) * q; + res._m[14] = (-n * u + p * B - r * A) * q; + res._m[15] = (k * u - l * B + o * A) * q; return res; } @@ -204,10 +252,22 @@ export class Mat4 { */ transposeTo() { var res = new Mat4(); - res._m[0] = this._m[0]; res._m[1] = this._m[4]; res._m[2] = this._m[8]; res._m[3] = this._m[12]; - res._m[4] = this._m[1]; res._m[5] = this._m[5]; res._m[6] = this._m[9]; res._m[7] = this._m[13]; - res._m[8] = this._m[2]; res._m[9] = this._m[6]; res._m[10] = this._m[10]; res._m[11] = this._m[14]; - res._m[12] = this._m[3]; res._m[13] = this._m[7]; res._m[14] = this._m[11]; res._m[15] = this._m[15]; + res._m[0] = this._m[0]; + res._m[1] = this._m[4]; + res._m[2] = this._m[8]; + res._m[3] = this._m[12]; + res._m[4] = this._m[1]; + res._m[5] = this._m[5]; + res._m[6] = this._m[9]; + res._m[7] = this._m[13]; + res._m[8] = this._m[2]; + res._m[9] = this._m[6]; + res._m[10] = this._m[10]; + res._m[11] = this._m[14]; + res._m[12] = this._m[3]; + res._m[13] = this._m[7]; + res._m[14] = this._m[11]; + res._m[15] = this._m[15]; return res; } @@ -217,10 +277,22 @@ export class Mat4 { * @returns {Mat4} - */ setIdentity() { - this._m[0] = 1; this._m[1] = 0; this._m[2] = 0; this._m[3] = 0; - this._m[4] = 0; this._m[5] = 1; this._m[6] = 0; this._m[7] = 0; - this._m[8] = 0; this._m[9] = 0; this._m[10] = 1; this._m[11] = 0; - this._m[12] = 0; this._m[13] = 0; this._m[14] = 0; this._m[15] = 1; + this._m[0] = 1; + this._m[1] = 0; + this._m[2] = 0; + this._m[3] = 0; + this._m[4] = 0; + this._m[5] = 1; + this._m[6] = 0; + this._m[7] = 0; + this._m[8] = 0; + this._m[9] = 0; + this._m[10] = 1; + this._m[11] = 0; + this._m[12] = 0; + this._m[13] = 0; + this._m[14] = 0; + this._m[15] = 1; return this; } @@ -231,21 +303,57 @@ export class Mat4 { * @returns {Mat4} - */ mul(mx) { - let d = this._m[0], e = this._m[1], g = this._m[2], f = this._m[3], - h = this._m[4], i = this._m[5], j = this._m[6], k = this._m[7], - l = this._m[8], o = this._m[9], m = this._m[10], n = this._m[11], - p = this._m[12], r = this._m[13], s = this._m[14], a = this._m[15]; + let d = this._m[0], + e = this._m[1], + g = this._m[2], + f = this._m[3], + h = this._m[4], + i = this._m[5], + j = this._m[6], + k = this._m[7], + l = this._m[8], + o = this._m[9], + m = this._m[10], + n = this._m[11], + p = this._m[12], + r = this._m[13], + s = this._m[14], + a = this._m[15]; - let A = mx._m[0], B = mx._m[1], t = mx._m[2], u = mx._m[3], - v = mx._m[4], w = mx._m[5], x = mx._m[6], y = mx._m[7], - z = mx._m[8], C = mx._m[9], D = mx._m[10], E = mx._m[11], - q = mx._m[12], F = mx._m[13], G = mx._m[14], b = mx._m[15]; + let A = mx._m[0], + B = mx._m[1], + t = mx._m[2], + u = mx._m[3], + v = mx._m[4], + w = mx._m[5], + x = mx._m[6], + y = mx._m[7], + z = mx._m[8], + C = mx._m[9], + D = mx._m[10], + E = mx._m[11], + q = mx._m[12], + F = mx._m[13], + G = mx._m[14], + b = mx._m[15]; var res = new Mat4(); - res._m[0] = A * d + B * h + t * l + u * p; res._m[1] = A * e + B * i + t * o + u * r; res._m[2] = A * g + B * j + t * m + u * s; res._m[3] = A * f + B * k + t * n + u * a; - res._m[4] = v * d + w * h + x * l + y * p; res._m[5] = v * e + w * i + x * o + y * r; res._m[6] = v * g + w * j + x * m + y * s; res._m[7] = v * f + w * k + x * n + y * a; - res._m[8] = z * d + C * h + D * l + E * p; res._m[9] = z * e + C * i + D * o + E * r; res._m[10] = z * g + C * j + D * m + E * s; res._m[11] = z * f + C * k + D * n + E * a; - res._m[12] = q * d + F * h + G * l + b * p; res._m[13] = q * e + F * i + G * o + b * r; res._m[14] = q * g + F * j + G * m + b * s; res._m[15] = q * f + F * k + G * n + b * a; + res._m[0] = A * d + B * h + t * l + u * p; + res._m[1] = A * e + B * i + t * o + u * r; + res._m[2] = A * g + B * j + t * m + u * s; + res._m[3] = A * f + B * k + t * n + u * a; + res._m[4] = v * d + w * h + x * l + y * p; + res._m[5] = v * e + w * i + x * o + y * r; + res._m[6] = v * g + w * j + x * m + y * s; + res._m[7] = v * f + w * k + x * n + y * a; + res._m[8] = z * d + C * h + D * l + E * p; + res._m[9] = z * e + C * i + D * o + E * r; + res._m[10] = z * g + C * j + D * m + E * s; + res._m[11] = z * f + C * k + D * n + E * a; + res._m[12] = q * d + F * h + G * l + b * p; + res._m[13] = q * e + F * i + G * o + b * r; + res._m[14] = q * g + F * j + G * m + b * s; + res._m[15] = q * f + F * k + G * n + b * a; return res; } @@ -256,7 +364,9 @@ export class Mat4 { * @returns {Mat4} - */ translate(v) { - var d = v.x, e = v.y, b = v.z; + var d = v.x, + e = v.y, + b = v.z; var a = this._m; a[12] = a[0] * d + a[4] * e + a[8] * b + a[12]; a[13] = a[1] * d + a[5] * e + a[9] * b + a[13]; @@ -292,10 +402,22 @@ export class Mat4 { s = Math.sin(angle); var rot = new Mat4(); var mx = rot._m; - mx[0] = c + (1 - c) * u.x * u.x; mx[1] = (1 - c) * u.y * u.x - s * u.z; mx[2] = (1 - c) * u.z * u.x + s * u.y; mx[3] = 0; - mx[4] = (1 - c) * u.x * u.y + s * u.z; mx[5] = c + (1 - c) * u.y * u.y; mx[6] = (1 - c) * u.z * u.y - s * u.x; mx[7] = 0; - mx[8] = (1 - c) * u.x * u.z - s * u.y; mx[9] = (1 - c) * u.y * u.z + s * u.x; mx[10] = c + (1 - c) * u.z * u.z; mx[11] = 0; - mx[12] = 0; mx[13] = 0; mx[14] = 0; mx[15] = 1; + mx[0] = c + (1 - c) * u.x * u.x; + mx[1] = (1 - c) * u.y * u.x - s * u.z; + mx[2] = (1 - c) * u.z * u.x + s * u.y; + mx[3] = 0; + mx[4] = (1 - c) * u.x * u.y + s * u.z; + mx[5] = c + (1 - c) * u.y * u.y; + mx[6] = (1 - c) * u.z * u.y - s * u.x; + mx[7] = 0; + mx[8] = (1 - c) * u.x * u.z - s * u.y; + mx[9] = (1 - c) * u.y * u.z + s * u.x; + mx[10] = c + (1 - c) * u.z * u.z; + mx[11] = 0; + mx[12] = 0; + mx[13] = 0; + mx[14] = 0; + mx[15] = 1; return this.mul(rot); } @@ -310,10 +432,22 @@ export class Mat4 { var c = Math.cos(angle), s = Math.sin(angle); var mx = this._m; - mx[0] = c + (1 - c) * u.x * u.x; mx[1] = (1 - c) * u.y * u.x - s * u.z; mx[2] = (1 - c) * u.z * u.x + s * u.y; mx[3] = 0; - mx[4] = (1 - c) * u.x * u.y + s * u.z; mx[5] = c + (1 - c) * u.y * u.y; mx[6] = (1 - c) * u.z * u.y - s * u.x; mx[7] = 0; - mx[8] = (1 - c) * u.x * u.z - s * u.y; mx[9] = (1 - c) * u.y * u.z + s * u.x; mx[10] = c + (1 - c) * u.z * u.z; mx[11] = 0; - mx[12] = 0; mx[13] = 0; mx[14] = 0; mx[15] = 1; + mx[0] = c + (1 - c) * u.x * u.x; + mx[1] = (1 - c) * u.y * u.x - s * u.z; + mx[2] = (1 - c) * u.z * u.x + s * u.y; + mx[3] = 0; + mx[4] = (1 - c) * u.x * u.y + s * u.z; + mx[5] = c + (1 - c) * u.y * u.y; + mx[6] = (1 - c) * u.z * u.y - s * u.x; + mx[7] = 0; + mx[8] = (1 - c) * u.x * u.z - s * u.y; + mx[9] = (1 - c) * u.y * u.z + s * u.x; + mx[10] = c + (1 - c) * u.z * u.z; + mx[11] = 0; + mx[12] = 0; + mx[13] = 0; + mx[14] = 0; + mx[15] = 1; return this; } @@ -337,9 +471,18 @@ export class Mat4 { */ scale(v) { var mx = this._m; - mx[0] = mx[0] * v.x; mx[1] = mx[1] * v.x; mx[2] = mx[2] * v.x; mx[3] = mx[3] * v.x; - mx[4] = mx[4] * v.y; mx[5] = mx[5] * v.y; mx[6] = mx[6] * v.y; mx[7] = mx[7] * v.y; - mx[8] = mx[8] * v.z; mx[9] = mx[9] * v.z; mx[10] = mx[10] * v.z; mx[11] = mx[11] * v.z; + mx[0] = mx[0] * v.x; + mx[1] = mx[1] * v.x; + mx[2] = mx[2] * v.x; + mx[3] = mx[3] * v.x; + mx[4] = mx[4] * v.y; + mx[5] = mx[5] * v.y; + mx[6] = mx[6] * v.y; + mx[7] = mx[7] * v.y; + mx[8] = mx[8] * v.z; + mx[9] = mx[9] * v.z; + mx[10] = mx[10] * v.z; + mx[11] = mx[11] * v.z; return this; } @@ -355,13 +498,15 @@ export class Mat4 { * @returns {Mat4} - */ setPerspective(left, right, bottom, top, near, far) { - var h = right - left, i = top - bottom, j = far - near; - this._m[0] = near * 2 / h; + var h = right - left, + i = top - bottom, + j = far - near; + this._m[0] = (near * 2) / h; this._m[1] = 0; this._m[2] = 0; this._m[3] = 0; this._m[4] = 0; - this._m[5] = near * 2 / i; + this._m[5] = (near * 2) / i; this._m[6] = 0; this._m[7] = 0; this._m[8] = (right + left) / h; @@ -387,7 +532,6 @@ export class Mat4 { * @return {Mat4} - */ setOrtho(left, right, bottom, top, near, far) { - var lr = 1.0 / (left - right), bt = 1.0 / (bottom - top), nf = 1.0 / (near - far), @@ -455,5 +599,5 @@ export class Mat4 { * @returns {Mat4} - */ export function mat4() { - return new og.Mat4(); + return new Mat4(); } diff --git a/src/og/math/Quat.js b/src/og/math/Quat.js index 191f1118..692c1898 100644 --- a/src/og/math/Quat.js +++ b/src/og/math/Quat.js @@ -1,9 +1,9 @@ -'use strict'; +"use strict"; -import * as math from '../math.js'; -import { Mat3 } from './Mat3.js'; -import { Mat4 } from './Mat4.js'; -import { Vec3 } from './Vec3.js'; +import * as math from "../math.js"; +import { Mat3 } from "./Mat3.js"; +import { Mat4 } from "./Mat4.js"; +import { Vec3 } from "./Vec3.js"; /** * A set of 4-dimensional coordinates used to represent rotation in 3-dimensional space. @@ -14,7 +14,6 @@ import { Vec3 } from './Vec3.js'; * @param {Number} [w=0.0] The W component. */ export class Quat { - /** * @param {Number} [x=0.0] The X component. * @param {Number} [y=0.0] The Y component. @@ -109,11 +108,7 @@ export class Quat { var v = axis.normal(); var half_angle = angle * 0.5; var sin_a = Math.sin(half_angle); - return new Quat( - v.x * sin_a, - v.y * sin_a, - v.z * sin_a, - Math.cos(half_angle)); + return new Quat(v.x * sin_a, v.y * sin_a, v.z * sin_a, Math.cos(half_angle)); } /** @@ -124,50 +119,29 @@ export class Quat { * @returns {Quat} - */ static getLookRotation(forward, up) { - var f = forward.normal().negate(); - var s = (up.cross(f)).normalize(); + var s = up.cross(f).normalize(); var u = f.cross(s); var z = 1.0 + s.x + u.y + f.z; if (z > 0.000001) { let fd = 1.0 / (2.0 * Math.sqrt(z)); - return new Quat( - (f.y - u.z) * fd, - (s.z - f.x) * fd, - (u.x - s.y) * fd, - 0.25 / fd - ); + return new Quat((f.y - u.z) * fd, (s.z - f.x) * fd, (u.x - s.y) * fd, 0.25 / fd); } if (s.x > u.y && s.x > f.z) { let fd = 1.0 / (2.0 * Math.sqrt(1.0 + s.x - u.y - f.z)); - return new Quat( - 0.25 / fd, - (u.x + s.y) * fd, - (s.z + f.x) * fd, - (f.y - u.z) * fd - ); + return new Quat(0.25 / fd, (u.x + s.y) * fd, (s.z + f.x) * fd, (f.y - u.z) * fd); } if (u.y > f.z) { let fd = 1.0 / (2.0 * Math.sqrt(1.0 + u.y - s.x - f.z)); - return new Quat( - (u.x + s.y) * fd, - 0.25 / fd, - (f.y + u.z) * fd, - (s.z - f.x) * fd - ); + return new Quat((u.x + s.y) * fd, 0.25 / fd, (f.y + u.z) * fd, (s.z - f.x) * fd); } let fd = 1.0 / (2.0 * Math.sqrt(1.0 + f.z - s.x - u.y)); - return new Quat( - (s.z + f.x) * fd, - (f.y + u.z) * fd, - 0.25 / fd, - (u.x - s.y) * fd - ); + return new Quat((s.z + f.x) * fd, (f.y + u.z) * fd, 0.25 / fd, (u.x - s.y) * fd); } /** @@ -180,10 +154,10 @@ export class Quat { static getLookAtSourceDest(sourcePoint, destPoint) { var forwardVector = destPoint.subA(sourcePoint).normalize(); var dot = Vec3.FORWARD.dot(forwardVector); - if (Math.abs(dot - (-1.0)) < 0.000001) { + if (Math.abs(dot - -1.0) < 0.000001) { return Quat.axisAngleToQuat(Vec3.UP, Math.PI); } - if (Math.abs(dot - (1.0)) < 0.000001) { + if (Math.abs(dot - 1.0) < 0.000001) { return new Quat(0.0, 0.0, 0.0, 1.0); } var rotAngle = Math.acos(dot); @@ -219,7 +193,7 @@ export class Quat { } /** - * Compute rotation between two vectors with around vector up + * Compute rotation between two vectors with around vector up * for exactly opposite vectors. If vectors exaclty in the same * direction than returns identity Quat. * @static @@ -231,7 +205,7 @@ export class Quat { static getRotationBetweenVectorsUp(source, dest, up) { var dot = source.dot(dest); if (Math.abs(dot + 1.0) < 0.000001) { - // vector source and dest point exactly in the opposite direction, + // vector source and dest point exactly in the opposite direction, // so it is a 180 degrees turn around the up-axis return Quat.axisAngleToQuat(up, Math.PI); } @@ -244,7 +218,7 @@ export class Quat { var rotAxis = source.cross(dest).normalize(); return Quat.axisAngleToQuat(rotAxis, rotAngle); } - + /** * Returns true if the components are zero. * @public @@ -355,7 +329,10 @@ export class Quat { * @returns {Quat} - */ scale(scale) { - this.x *= scale; this.y *= scale; this.z *= scale; this.w *= scale; + this.x *= scale; + this.y *= scale; + this.z *= scale; + this.w *= scale; return this; } @@ -398,9 +375,8 @@ export class Quat { * @returns {Quat} - */ setLookRotation(forward, up) { - var f = forward.normal().negate(); - var s = (up.cross(f)).normalize(); + var s = up.cross(f).normalize(); var u = f.cross(s); var z = 1.0 + s.x + u.y + f.z; @@ -437,7 +413,7 @@ export class Quat { /** * Gets spherical coordinates. * @public - * @returns {Object} Returns object with latitude, longitude and alpha. + * @returns {Object} Returns object with latitude, longitude and alpha. */ toSphericalCoords() { var cos_a = this.w; @@ -450,7 +426,8 @@ export class Quat { var ty = this.y / sin_a; var tz = this.z / sin_a; - var lon, lat = -Math.asin(ty); + var lon, + lat = -Math.asin(ty); if (tx * tx + tz * tz < 0.0005) { lon = 0; } else { @@ -484,15 +461,19 @@ export class Quat { * @returns {Object} - */ getAxisAngle() { - var vl = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z); + let x = this.x, + y = this.y, + z = this.z, + w = this.w; + var vl = Math.sqrt(x * x + y * y + z * z); var axis, angle; if (vl > 0.0000001) { var ivl = 1.0 / vl; axis = new Vec3(x * ivl, y * ivl, z * ivl); - if (this.w < 0) { - angle = 2.0 * Math.atan2(-vl, -w); // -PI,0 + if (w < 0) { + angle = 2.0 * Math.atan2(-vl, -w); // -PI,0 } else { - angle = 2.0 * Math.atan2(vl, w); // 0,PI + angle = 2.0 * Math.atan2(vl, w); // 0,PI } } else { axis = new Vec3(0, 0, 0); @@ -539,8 +520,10 @@ export class Quat { * @returns {Object} - */ getEulerAngles() { - - let x = this.x, y = this.y, z = this.z, w = this.w; + let x = this.x, + y = this.y, + z = this.z, + w = this.w; let sqy = y * y; @@ -567,7 +550,9 @@ export class Quat { * @returns {Quat} - */ setFromMatrix4(m) { - var tr, s, q = []; + var tr, + s, + q = []; var i, j, k; m = m._m; @@ -589,7 +574,7 @@ export class Quat { j = nxt[i]; k = nxt[j]; - s = Math.sqrt((m[i * 5] - (m[j * 5] + m[k * 5])) + 1.0); + s = Math.sqrt(m[i * 5] - (m[j * 5] + m[k * 5]) + 1.0); q[i] = s * 0.5; @@ -626,7 +611,24 @@ export class Quat { var yz = this.y * zs; var zz = this.z * zs; var m = out || new Mat4(); - return m.set([1 - (yy + zz), xy - wz, xz + wy, 0, xy + wz, 1 - (xx + zz), yz - wx, 0, xz - wy, yz + wx, 1 - (xx + yy), 0, 0, 0, 0, 1]); + return m.set([ + 1 - (yy + zz), + xy - wz, + xz + wy, + 0, + xy + wz, + 1 - (xx + zz), + yz - wx, + 0, + xz - wy, + yz + wx, + 1 - (xx + yy), + 0, + 0, + 0, + 0, + 1 + ]); } /** @@ -658,9 +660,15 @@ export class Quat { h = g * h; g = g * i; - mx[0] = 1 - (l + e); mx[1] = k - g; mx[2] = c + h; - mx[3] = k + g; mx[4] = 1 - (j + e); mx[5] = d - f; - mx[6] = c - h; mx[7] = d + f; mx[8] = 1 - (j + l); + mx[0] = 1 - (l + e); + mx[1] = k - g; + mx[2] = c + h; + mx[3] = k + g; + mx[4] = 1 - (j + e); + mx[5] = d - f; + mx[6] = c - h; + mx[7] = d + f; + mx[8] = 1 - (j + l); return m; } @@ -672,7 +680,6 @@ export class Quat { * @returns {Vec3} - */ mulVec3(v) { - // t = 2 * cross(q.xyz, v) // v' = v + q.w * t + cross(q.xyz, t) @@ -694,7 +701,8 @@ export class Quat { return new Vec3( i * a + d * -b + j * -h - k * -f, j * a + d * -f + k * -b - i * -h, - k * a + d * -h + i * -f - j * -b); + k * a + d * -h + i * -f - j * -b + ); } /** @@ -704,13 +712,20 @@ export class Quat { * @returns {Quat} - */ mul(q) { - var d = this.x, e = this.y, g = this.z, a = this.w; - var f = q.x, h = q.y, i = q.z, b = q.w; + var d = this.x, + e = this.y, + g = this.z, + a = this.w; + var f = q.x, + h = q.y, + i = q.z, + b = q.w; return new Quat( d * b + a * f + e * i - g * h, e * b + a * h + g * f - d * i, g * b + a * i + d * h - e * f, - a * b - d * f - e * h - g * i); + a * b - d * f - e * h - g * i + ); } /** @@ -720,8 +735,14 @@ export class Quat { * @returns {Quat} - */ mulA(q) { - var d = this.x, e = this.y, g = this.z, a = this.w; - var f = q.x, h = q.y, i = q.z, b = q.w; + var d = this.x, + e = this.y, + g = this.z, + a = this.w; + var f = q.x, + h = q.y, + i = q.z, + b = q.w; this.x = d * b + a * f + e * i - g * h; this.y = e * b + a * h + g * f - d * i; this.z = g * b + a * i + d * h - e * f; @@ -738,7 +759,7 @@ export class Quat { return new Quat(-this.x, -this.y, -this.z, this.w); } - /** + /** * Computes the inverse of the Quat. * @public * @returns {Quat} - @@ -754,7 +775,10 @@ export class Quat { * @returns {number} - */ magnitude() { - var b = this.x, c = this.y, d = this.z, a = this.w; + var b = this.x, + c = this.y, + d = this.z, + a = this.w; return Math.sqrt(b * b + c * c + d * d + a * a); } @@ -764,7 +788,10 @@ export class Quat { * @returns {number} - */ magnitude2() { - var b = this.x, c = this.y, d = this.z, a = this.w; + var b = this.x, + c = this.y, + d = this.z, + a = this.w; return b * b + c * c + d * d + a * a; } @@ -784,7 +811,10 @@ export class Quat { * @returns {Quat} - */ normalize() { - var c = this.x, d = this.y, e = this.z, g = this.w, + var c = this.x, + d = this.y, + e = this.z, + g = this.w, f = Math.sqrt(c * c + d * d + e * e + g * g); if (f === 0.0) { this.x = 0; @@ -823,9 +853,14 @@ export class Quat { * @returns {Quat} - */ slerp(b, t) { - - var ax = this.x, ay = this.y, az = this.z, aw = this.w, - bx = b.x, by = b.y, bz = b.z, bw = b.w; + var ax = this.x, + ay = this.y, + az = this.z, + aw = this.w, + bx = b.x, + by = b.y, + bz = b.z, + bw = b.w; var omega, cosom, sinom, scale0, scale1; @@ -839,7 +874,7 @@ export class Quat { bw = -bw; } - if ((1.0 - cosom) > 0.000001) { + if (1.0 - cosom > 0.000001) { omega = Math.acos(cosom); sinom = Math.sin(omega); scale0 = Math.sin((1.0 - t) * omega) / sinom; @@ -864,7 +899,10 @@ export class Quat { * @returns {Number} - */ getRoll(reprojectAxis) { - var x = this.x, y = this.y, z = this.z, w = this.w; + var x = this.x, + y = this.y, + z = this.z, + w = this.w; if (reprojectAxis) { var fTy = 2.0 * y; var fTz = 2.0 * z; @@ -885,7 +923,10 @@ export class Quat { * @returns {number} - */ getPitch(reprojectAxis) { - var x = this.x, y = this.y, z = this.z, w = this.w; + var x = this.x, + y = this.y, + z = this.z, + w = this.w; if (reprojectAxis) { var fTx = 2.0 * x; var fTz = 2.0 * z; @@ -906,7 +947,10 @@ export class Quat { * @returns {number} - */ getYaw(reprojectAxis) { - var x = this.x, y = this.y, z = this.z, w = this.w; + var x = this.x, + y = this.y, + z = this.z, + w = this.w; if (reprojectAxis) { var fTx = 2.0 * x; var fTy = 2.0 * y; @@ -934,4 +978,3 @@ export class Quat { export function quat(x, y, z, w) { return new Quat(x, y, z, w); } - diff --git a/src/og/math/Vec4.js b/src/og/math/Vec4.js index e078e70b..978570f7 100644 --- a/src/og/math/Vec4.js +++ b/src/og/math/Vec4.js @@ -2,9 +2,10 @@ * @module og/math/Vec4 */ -'use strict'; +"use strict"; -import { Vec3 } from './Vec3.js'; +import { Vec3 } from "./Vec3.js"; +import { frac } from "../math.js"; /** * Class represents a 4d vector. @@ -15,9 +16,7 @@ import { Vec3 } from './Vec3.js'; * @param {number} [w] - Fourth value. */ export class Vec4 { - constructor(x, y, z, w) { - /** * @public * @type {number} @@ -46,15 +45,17 @@ export class Vec4 { /** * Identity vector [0,0,0,1]. * @const - * @type {math.Vec4} + * @type {Vec4} */ - static get identity() { return new Vec4(0, 0, 0, 1) } + static get identity() { + return new Vec4(0, 0, 0, 1); + } /** * Creates 4d vector from array. * @function * @param {Array.} - (exactly 4 entries) - * @returns {math.Vec4} + * @returns {Vec4} */ static fromVec(arr) { return new Vec4(arr[0], arr[1], arr[2], arr[3]); @@ -72,7 +73,7 @@ export class Vec4 { /** * Returns clone vector. * @public - * @returns {math.Vec4} + * @returns {Vec4} */ clone(v) { return new Vec4(this.x, this.y, this.z, this.w); @@ -81,7 +82,7 @@ export class Vec4 { /** * Compares with vector. Returns true if it equals another. * @public - * @param {math.Vec4} p - Vector to compare. + * @param {Vec4} p - Vector to compare. * @returns {boolean} */ equal(v) { @@ -90,8 +91,8 @@ export class Vec4 { /** * Copy input vector's values. - * @param {math.Vec4} v - Vector to copy. - * @returns {math.Vec4} + * @param {Vec4} v - Vector to copy. + * @returns {Vec4} */ copy(v) { this.x = v.x; @@ -127,7 +128,7 @@ export class Vec4 { * @param {number} y - Value Y. * @param {number} z - Value Z. * @param {number} w - Value W. - * @returns {math.Vec4} + * @returns {Vec4} */ set(x, y, z, w) { this.x = x; @@ -140,8 +141,8 @@ export class Vec4 { /** * Adds vector to the current. * @public - * @param {math.Vec4} - * @returns {math.Vec4} + * @param {Vec4} + * @returns {Vec4} */ addA(v) { this.x += v.x; @@ -154,8 +155,8 @@ export class Vec4 { /** * Subtract vector from the current. * @public - * @param {math.Vec4} v - Subtract vector. - * @returns {math.Vec4} + * @param {Vec4} v - Subtract vector. + * @returns {Vec4} */ subA(v) { this.x -= v.x; @@ -169,7 +170,7 @@ export class Vec4 { * Scale current vector. * @public * @param {number} scale - Scale value. - * @returns {math.Vec4} + * @returns {Vec4} */ scale(scale) { this.x *= scale; @@ -182,7 +183,7 @@ export class Vec4 { /** * Makes vector affinity. Thereby fourh component becomes to 1.0. * @public - * @returns {math.Vec4} + * @returns {Vec4} */ affinity() { var iw = 1 / this.w; @@ -206,7 +207,7 @@ export class Vec4 { /** * Vector's edge function that returns vector where each component is 0.0 if it's smaller then edge and otherwise 1.0. * @public - * @returns {math.Vec4} + * @returns {Vec4} */ getStep(edge) { return new Vec4( @@ -220,15 +221,10 @@ export class Vec4 { /** * The vector fract function returns the vector of fractional parts of each value, i.e. x minus floor(x). * @public - * @returns {math.Vec4} + * @returns {Vec4} */ getFrac(v) { - return new Vec4( - og.math.frac(v.x), - og.math.frac(v.y), - og.math.frac(v.z), - og.math.frac(v.w) - ); + return new Vec4(frac(v.x), frac(v.y), frac(v.z), frac(v.w)); } /** @@ -258,8 +254,8 @@ export class Vec4 { * @param {number} [y] - Second value. * @param {number} [z] - Third value. * @param {number} [w] - Fourth value. - * @returns {math.Vec4} + * @returns {Vec4} */ export function vec4(x, y, z, w) { - return new og.math.Vec4(x, y, z, w); + return new Vec4(x, y, z, w); } diff --git a/src/og/segment/Segment.js b/src/og/segment/Segment.js index 217f0993..525aa38a 100644 --- a/src/og/segment/Segment.js +++ b/src/og/segment/Segment.js @@ -11,6 +11,7 @@ import { Sphere } from "../bv/Sphere.js"; import { Box } from "../bv/Box.js"; import { Vec3 } from "../math/Vec3.js"; import * as segmentHelper from "../segment/segmentHelper.js"; +import { getMatrixSubArray } from "../utils/shared.js"; export const MAX_NORMAL_ZOOM = 7; @@ -376,8 +377,8 @@ class Segment { } /** - * - * @param {boolean} forceLoading + * + * @param {boolean} forceLoading */ loadTerrain(forceLoading) { if (this.tileZoom < this.planet.terrain.minZoom) { diff --git a/src/og/utils/polylabel.js b/src/og/utils/polylabel.js deleted file mode 100644 index 824e92ff..00000000 --- a/src/og/utils/polylabel.js +++ /dev/null @@ -1,176 +0,0 @@ -/* eslint-disable no-mixed-operators */ -goog.provide('og.utils.getPolyCenter'); - -/* - ISC License - Copyright (c) 2016 Mapbox - - Permission to use, copy, modify, and/or distribute this software for any purpose - with or without fee is hereby granted, provided that the above copyright notice - and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH REGARD TO - THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. - IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR - CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA - OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS - ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - SOFTWARE. - - https://github.com/mapbox/polylabel -*/ - -og.utils.getPolyCenter = function (polygon) { - - function polylabel(polygon, precision, debug) { - precision = precision || 1.0; - - // find the bounding box of the outer ring - var minX, minY, maxX, maxY; - for (var i = 0; i < polygon[0].length; i++) { - var p = polygon[0][i]; - if (!i || p[0] < minX) minX = p[0]; - if (!i || p[1] < minY) minY = p[1]; - if (!i || p[0] > maxX) maxX = p[0]; - if (!i || p[1] > maxY) maxY = p[1]; - } - - var width = maxX - minX; - var height = maxY - minY; - var cellSize = Math.min(width, height); - var h = cellSize / 2; - - // a priority queue of cells in order of their "potential" (max distance to polygon) - var cellQueue = new Queue(null, compareMax); - - if (cellSize === 0) return [minX, minY]; - - // cover polygon with initial cells - for (var x = minX; x < maxX; x += cellSize) { - for (var y = minY; y < maxY; y += cellSize) { - cellQueue.push(new Cell(x + h, y + h, h, polygon)); - } - } - - // take centroid as the first best guess - var bestCell = getCentroidCell(polygon); - - // special case for rectangular polygons - var bboxCell = new Cell(minX + width / 2, minY + height / 2, 0, polygon); - if (bboxCell.d > bestCell.d) bestCell = bboxCell; - - var numProbes = cellQueue.length; - - while (cellQueue.length) { - // pick the most promising cell from the queue - var cell = cellQueue.pop(); - - // update the best cell if we found a better one - if (cell.d > bestCell.d) { - bestCell = cell; - if (debug) console.log('found best %d after %d probes', Math.round(1e4 * cell.d) / 1e4, numProbes); - } - - // do not drill down further if there's no chance of a better solution - if (cell.max - bestCell.d <= precision) continue; - - // split the cell into four cells - h = cell.h / 2; - cellQueue.push(new Cell(cell.x - h, cell.y - h, h, polygon)); - cellQueue.push(new Cell(cell.x + h, cell.y - h, h, polygon)); - cellQueue.push(new Cell(cell.x - h, cell.y + h, h, polygon)); - cellQueue.push(new Cell(cell.x + h, cell.y + h, h, polygon)); - numProbes += 4; - } - - if (debug) { - console.log('num probes: ' + numProbes); - console.log('best distance: ' + bestCell.d); - } - - return [bestCell.x, bestCell.y]; - } - - function compareMax(a, b) { - return b.max - a.max; - } - - function Cell(x, y, h, polygon) { - this.x = x; // cell center x - this.y = y; // cell center y - this.h = h; // half the cell size - this.d = pointToPolygonDist(x, y, polygon); // distance from cell center to polygon - this.max = this.d + this.h * Math.SQRT2; // max distance to polygon within a cell - } - - // signed distance from point to polygon outline (negative if point is outside) - function pointToPolygonDist(x, y, polygon) { - var inside = false; - var minDistSq = Infinity; - - for (var k = 0; k < polygon.length; k++) { - var ring = polygon[k]; - - for (var i = 0, len = ring.length, j = len - 1; i < len; j = i++) { - var a = ring[i]; - var b = ring[j]; - - if ((a[1] > y !== b[1] > y) && - (x < (b[0] - a[0]) * (y - a[1]) / (b[1] - a[1]) + a[0])) inside = !inside; - - minDistSq = Math.min(minDistSq, getSegDistSq(x, y, a, b)); - } - } - - return (inside ? 1 : -1) * Math.sqrt(minDistSq); - } - - // get polygon centroid - function getCentroidCell(polygon) { - var area = 0; - var x = 0; - var y = 0; - var points = polygon[0]; - - for (var i = 0, len = points.length, j = len - 1; i < len; j = i++) { - var a = points[i]; - var b = points[j]; - var f = a[0] * b[1] - b[0] * a[1]; - x += (a[0] + b[0]) * f; - y += (a[1] + b[1]) * f; - area += f * 3; - } - if (area === 0) return new Cell(points[0][0], points[0][1], 0, polygon); - return new Cell(x / area, y / area, 0, polygon); - } - - // get squared distance from a point to a segment - function getSegDistSq(px, py, a, b) { - - var x = a[0]; - var y = a[1]; - var dx = b[0] - x; - var dy = b[1] - y; - - if (dx !== 0 || dy !== 0) { - - var t = ((px - x) * dx + (py - y) * dy) / (dx * dx + dy * dy); - - if (t > 1) { - x = b[0]; - y = b[1]; - - } else if (t > 0) { - x += dx * t; - y += dy * t; - } - } - - dx = px - x; - dy = py - y; - - return dx * dx + dy * dy; - } - - return polylabel(polygon, 1); -}; \ No newline at end of file diff --git a/src/og/webgl/Framebuffer.js b/src/og/webgl/Framebuffer.js index 10064b4d..8d9ff1bf 100644 --- a/src/og/webgl/Framebuffer.js +++ b/src/og/webgl/Framebuffer.js @@ -2,9 +2,9 @@ * @module og/webgl/Framebuffer */ -'use strict'; +"use strict"; -import { ImageCanvas } from '../ImageCanvas.js'; +import { ImageCanvas } from "../ImageCanvas.js"; /** * Class represents framebuffer. @@ -21,9 +21,7 @@ import { ImageCanvas } from '../ImageCanvas.js'; * @param {Boolean} [options.useDepth] - Using depth buffer during the rendering. */ export class Framebuffer { - constructor(handler, options = {}) { - /** * WebGL handler. * @public @@ -49,20 +47,27 @@ export class Framebuffer { this._filter = options.filter || "NEAREST"; - this._internalFormatArr = options.internalFormat instanceof Array ? options.internalFormat : [options.internalFormat || "RGBA"]; + this._internalFormatArr = + options.internalFormat instanceof Array + ? options.internalFormat + : [options.internalFormat || "RGBA"]; - this._formatArr = options.format instanceof Array ? options.format : [options.format || "RGBA"]; + this._formatArr = + options.format instanceof Array ? options.format : [options.format || "RGBA"]; - this._typeArr = options.type instanceof Array ? options.type : [options.type || "UNSIGNED_BYTE"]; + this._typeArr = + options.type instanceof Array ? options.type : [options.type || "UNSIGNED_BYTE"]; - this._attachmentArr = options.attachment instanceof Array ? - options.attachment.map((a, i) => { - let res = a.toUpperCase(); - if (res === "COLOR_ATTACHMENT") { - return `${res}${i.toString()}`; - } - return res; - }) : [options.attachment || "COLOR_ATTACHMENT0"]; + this._attachmentArr = + options.attachment instanceof Array + ? options.attachment.map((a, i) => { + let res = a.toUpperCase(); + if (res === "COLOR_ATTACHMENT") { + return `${res}${i.toString()}`; + } + return res; + }) + : [options.attachment || "COLOR_ATTACHMENT0"]; /** * Framebuffer width. @@ -78,12 +83,13 @@ export class Framebuffer { */ this._height = options.height || handler.canvas.height; - this._depthComponent = options.depthComponent != undefined ? options.depthComponent : "DEPTH_COMPONENT16"; + this._depthComponent = + options.depthComponent != undefined ? options.depthComponent : "DEPTH_COMPONENT16"; this._useDepth = options.useDepth != undefined ? options.useDepth : true; /** - * Framebuffer activity. + * Framebuffer activity. * @private * @type {boolean} */ @@ -100,19 +106,25 @@ export class Framebuffer { } static blit(sourceFramebuffer, destFramebuffer, glAttachment, glMask, glFilter) { - let gl = sourceFramebuffer.handler.gl; gl.bindFramebuffer(gl.READ_FRAMEBUFFER, sourceFramebuffer._fbo); - gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, framebuffer._fbo); + gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, destFramebuffer._fbo); gl.readBuffer(glAttachment); gl.clearBufferfv(gl.COLOR, 0, [0.0, 0.0, 0.0, 1.0]); gl.blitFramebuffer( - 0, 0, sourceFramebuffer._width, sourceFramebuffer._height, - 0, 0, destFramebuffer._width, destFramebuffer._height, - glMask, glFilter + 0, + 0, + sourceFramebuffer._width, + sourceFramebuffer._height, + 0, + 0, + destFramebuffer._width, + destFramebuffer._height, + glMask, + glFilter ); gl.bindFramebuffer(gl.FRAMEBUFFER, null); @@ -151,8 +163,8 @@ export class Framebuffer { if (!this._isBare) { let attachmentArr = []; for (var i = 0; i < this.textures.length; i++) { - - let ti = this.textures[i] || + let ti = + this.textures[i] || this.handler.createEmptyTexture2DExt( this._width, this._height, @@ -178,8 +190,18 @@ export class Framebuffer { if (this._useDepth) { this._depthRenderbuffer = gl.createRenderbuffer(); gl.bindRenderbuffer(gl.RENDERBUFFER, this._depthRenderbuffer); - gl.renderbufferStorage(gl.RENDERBUFFER, gl[this._depthComponent], this._width, this._height); - gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, this._depthRenderbuffer); + gl.renderbufferStorage( + gl.RENDERBUFFER, + gl[this._depthComponent], + this._width, + this._height + ); + gl.framebufferRenderbuffer( + gl.FRAMEBUFFER, + gl.DEPTH_ATTACHMENT, + gl.RENDERBUFFER, + this._depthRenderbuffer + ); gl.bindRenderbuffer(gl.RENDERBUFFER, null); } @@ -197,7 +219,13 @@ export class Framebuffer { bindOutputTexture(texture, glAttachment) { var gl = this.handler.gl; gl.bindTexture(gl.TEXTURE_2D, texture); - gl.framebufferTexture2D(gl.FRAMEBUFFER, glAttachment || gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0); + gl.framebufferTexture2D( + gl.FRAMEBUFFER, + glAttachment || gl.COLOR_ATTACHMENT0, + gl.TEXTURE_2D, + texture, + 0 + ); gl.bindTexture(gl.TEXTURE_2D, null); } @@ -248,7 +276,15 @@ export class Framebuffer { var gl = this.handler.gl; gl.bindFramebuffer(gl.FRAMEBUFFER, this._fbo); gl.readBuffer && gl.readBuffer(gl.COLOR_ATTACHMENT0 + index || 0); - gl.readPixels(nx * this._width, ny * this._height, w, h, gl.RGBA, gl[this._typeArr[index]], res); + gl.readPixels( + nx * this._width, + ny * this._height, + w, + h, + gl.RGBA, + gl[this._typeArr[index]], + res + ); gl.bindFramebuffer(gl.FRAMEBUFFER, null); } @@ -262,7 +298,15 @@ export class Framebuffer { var gl = this.handler.gl; gl.bindFramebuffer(gl.FRAMEBUFFER, this._fbo); gl.readBuffer && gl.readBuffer(gl.COLOR_ATTACHMENT0 + attachmentIndex); - gl.readPixels(0, 0, this._width, this._height, gl.RGBA, gl[this._typeArr[attachmentIndex]], res); + gl.readPixels( + 0, + 0, + this._width, + this._height, + gl.RGBA, + gl[this._typeArr[attachmentIndex]], + res + ); gl.bindFramebuffer(gl.FRAMEBUFFER, null); } @@ -323,17 +367,21 @@ export class Framebuffer { openImage() { var img = this.getImage(); var dataUrl = img.src; - var windowContent = ''; - windowContent += ''; - windowContent += 'Print'; - windowContent += ''; + var windowContent = ""; + windowContent += ""; + windowContent += "Print"; + windowContent += ""; windowContent += ''; - windowContent += ''; - windowContent += ''; - var printWin = window.open('', '', 'width=' + img.width + 'px ,height=' + img.height + 'px'); + windowContent += ""; + windowContent += ""; + var printWin = window.open( + "", + "", + "width=" + img.width + "px ,height=" + img.height + "px" + ); printWin.document.open(); printWin.document.write(windowContent); printWin.document.close(); printWin.focus(); } -} \ No newline at end of file +} diff --git a/src/og/webgl/ProgramController.js b/src/og/webgl/ProgramController.js index 661053a8..a2fe739b 100644 --- a/src/og/webgl/ProgramController.js +++ b/src/og/webgl/ProgramController.js @@ -1,23 +1,21 @@ -import { Handler } from "./Handler"; -import { Program } from "./Program"; +import { Handler } from "./Handler.js"; +import { Program } from "./Program.js"; -'use strict'; +("use strict"); /** - * This is shader program controller that used by hadler object to access the shader + * This is shader program controller that used by hadler object to access the shader * program capabilities, like switching program during the rendering. * Get access to the program from ...handler.programs. etc. * @class */ export class ProgramController { - /** - * + * * @param {Handler} handler - Handler. * @param {Program} program - Shader program. */ constructor(handler, program) { - /** * Shader program. * @private @@ -142,4 +140,4 @@ export class ProgramController { this._program.drawArrays(mode, numItems); return this; } -} \ No newline at end of file +} diff --git a/src/og/webgl/callbacks.js b/src/og/webgl/callbacks.js index 073821f1..351d8a41 100644 --- a/src/og/webgl/callbacks.js +++ b/src/og/webgl/callbacks.js @@ -2,16 +2,16 @@ * @module og/webgl/callbacks */ -'use strict'; +"use strict"; -import { types } from './types.js'; +import { types } from "./types.js"; /*========================= Uniforms callbacks =========================*/ export const callbacks = { - 'u': [], - 'a': [] + u: [], + a: [] }; callbacks.u[types.MAT4] = function (program, variable) { @@ -71,7 +71,7 @@ callbacks.u[types.SAMPLER2DARRAY] = function (program, variable) { }; callbacks.u[types.INTXX] = function (program, variable) { - pgl.uniform1iv(variable._pName, variable.value); + program.gl.uniform1iv(variable._pName, variable.value); }; callbacks.u[types.FLOATXX] = function (program, variable) { @@ -95,4 +95,4 @@ callbacks.a[types.VEC3] = function (program, variable) { callbacks.a[types.VEC4] = function (program, variable) { program.gl.vertexAttrib4fv(variable._pName, variable.value); -}; \ No newline at end of file +}; From c5e868602064496fbed8a8decf5b34e13746251c Mon Sep 17 00:00:00 2001 From: Zemledelec Date: Wed, 3 Nov 2021 20:59:43 +0300 Subject: [PATCH 20/27] v0.11.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c1685323..fd8c6990 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@openglobus/og", - "version": "0.11.2", + "version": "0.11.3", "description": "[OpenGlobus](http://www.openglobus.org/) is a javascript library designed to display interactive 3d maps and planets with map tiles, imagery and vector data, markers and 3d objects. It uses the WebGL technology, open source and completely free.", "directories": { "example": "./sandbox" From cd1c837e084580d05ccad0783abdef9704594bd9 Mon Sep 17 00:00:00 2001 From: Zemledelec Date: Wed, 10 Nov 2021 13:34:49 +0300 Subject: [PATCH 21/27] fixed rendercompleted event --- examples/layerPicking/layerPicking.html | 2 +- examples/layerSwitcher/layerSwitcher.html | 2 +- src/og/Globe.js | 15 ++-- src/og/camera/Camera.js | 21 ++---- src/og/layer/Layer.js | 9 +++ src/og/layer/Material.js | 43 +++++------ src/og/layer/XYZ.js | 80 +++++++++++---------- src/og/math/Mat4.js | 2 +- src/og/scene/Planet.js | 48 ++++++++----- src/og/webgl/Handler.js | 87 ++++++++++++++--------- 10 files changed, 179 insertions(+), 130 deletions(-) diff --git a/examples/layerPicking/layerPicking.html b/examples/layerPicking/layerPicking.html index 2330bd94..e495e750 100644 --- a/examples/layerPicking/layerPicking.html +++ b/examples/layerPicking/layerPicking.html @@ -57,7 +57,7 @@ opacity: 0.7, visibility: true, isBaseLayer: false, - url: "//openglobus.org/geoserver/", + url: "//openglobus.org:8080/geoserver/", layers: "topp:states", transparentColor: [1.0, 1.0, 1.0] }); diff --git a/examples/layerSwitcher/layerSwitcher.html b/examples/layerSwitcher/layerSwitcher.html index 727a7103..25a893ee 100644 --- a/examples/layerSwitcher/layerSwitcher.html +++ b/examples/layerSwitcher/layerSwitcher.html @@ -88,7 +88,7 @@ extent: [[-128, 24], [-66, 49]], visibility: false, isBaseLayer: false, - url: "//openglobus.org/geoserver/", + url: "//openglobus.org:8080/geoserver/", layers: "topp:states", opacity: 0.4, attribution: 'Hi!', diff --git a/src/og/Globe.js b/src/og/Globe.js index 9e46f60e..2acf1aea 100644 --- a/src/og/Globe.js +++ b/src/og/Globe.js @@ -61,12 +61,14 @@ const PLANET_NAME_PREFIX = "globus_planet_"; * @param {Number} [options.maxGridSize] = Maximal segment grid size. 128 is default * @param {boolean} [options.useSpecularTexture] - use specular water mask * @param {boolean} [options.useNightTexture] - show night cities + * @param {Number} [options.maxEqualZoomAltitude=850000.0] - Maximal altitude since segments on the screen bacame the same zoom level + * @param {Number} [options.minEqualZoomAltitude=10000.0] - Minimal altitude since segments on the screen bacame the same zoom level + * @param {Number} [options.minEqualZoomCameraSlope=0.8] - Minimal camera slope above te globe where segments on the screen bacame the same zoom level */ class Globe { - /** - * @param {*} options + * @param {*} options */ constructor(options) { // Canvas creation @@ -163,7 +165,10 @@ class Globe { useNightTexture: options.useNightTexture, useSpecularTexture: options.useSpecularTexture, minAltitude: options.minAltitude, - maxAltitude: options.maxAltitude + maxAltitude: options.maxAltitude, + maxEqualZoomAltitude: options.maxEqualZoomAltitude, + minEqualZoomAltitude: options.minEqualZoomAltitude, + minEqualZoomCameraSlope: options.minEqualZoomCameraSlope }); } @@ -185,8 +190,8 @@ class Globe { options.useEarthNavigation ? new EarthNavigation() : new MouseNavigation({ - minSlope: options.minSlope - }), + minSlope: options.minSlope + }), new TouchNavigation(), new EarthCoordinates(), new ScaleControl(), diff --git a/src/og/camera/Camera.js b/src/og/camera/Camera.js index 5e36b182..dd8235ef 100644 --- a/src/og/camera/Camera.js +++ b/src/og/camera/Camera.js @@ -119,7 +119,7 @@ class Camera { this._pv = this._v.clone(); this._pn = this._n.clone(); this._peye = this.eye.clone(); - this._moved = false; + this.isMoved = false; this._tanViewAngle_hrad = 0.0; this._tanViewAngle_hradOneByHeight = 0.0; @@ -178,20 +178,13 @@ class Camera { n = this._n, eye = this.eye; - if (this.events.moveend.handlers.length) { - if ( - this._peye.equal(eye) && - this._pu.equal(u) && - this._pv.equal(v) && - this._pn.equal(n) - ) { - if (this._moved) { - this.events.dispatch(this.events.moveend, this); - } - this._moved = false; - } else { - this._moved = true; + if (this._peye.equal(eye) && this._pu.equal(u) && this._pv.equal(v) && this._pn.equal(n)) { + if (this.isMoved) { + this.events.dispatch(this.events.moveend, this); } + this.isMoved = false; + } else { + this.isMoved = true; } this._pu.copy(u); diff --git a/src/og/layer/Layer.js b/src/og/layer/Layer.js index 7dadd700..a387e479 100644 --- a/src/og/layer/Layer.js +++ b/src/og/layer/Layer.js @@ -11,6 +11,7 @@ import { Extent } from "../Extent.js"; import { LonLat } from "../LonLat.js"; import { Material } from "./Material.js"; import { Vec3 } from "../math/Vec3.js"; +import { createTexture } from "../webgl/Handler.js"; export const FADING_FACTOR = 0.29; @@ -183,6 +184,14 @@ class Layer { */ this._extent = null; + if (options.textureFilter) { + this.createTexture = + createTexture[options.textureFilter.trim().toUpperCase()] || + createTexture[textureFilter.LINEAR]; + } else { + this.createTexture = createTexture.ANISOTROPHIC; + } + /** * Visible mercator extent. * @protected diff --git a/src/og/layer/Material.js b/src/og/layer/Material.js index c930a261..31e5a27e 100644 --- a/src/og/layer/Material.js +++ b/src/og/layer/Material.js @@ -2,14 +2,13 @@ * @module og/layer/Material */ -'use strict'; +"use strict"; class Material { - /** - * - * @param {*} segment - * @param {*} layer + * + * @param {*} segment + * @param {*} layer */ constructor(segment, layer) { this.segment = segment; @@ -30,29 +29,33 @@ class Material { this.pickingReady = false; } - /** - * @param {*} layer - */ - assignLayer(layer) { - this.layer = layer; - } + ///** + // * @param {*} layer + // */ + //assignLayer(layer) { + // this.layer = layer; + //} /** - * + * */ abortLoading() { this.layer.abortMaterialLoading(this); } + _createTexture(img) { + return this.layer.createTexture(this.segment.handler, img); + } + /** - * - * @param {*} img + * + * @param {*} img */ applyImage(img) { if (this.segment.initialized) { this._updateTexture = null; //this.image = img; - this.texture = this.segment.handler.createTexture(img); + this.texture = this._createTexture(img); this.appliedNodeId = this.segment.node.nodeId; this.isReady = true; this.pickingReady = true; @@ -63,9 +66,9 @@ class Material { } /** - * - * @param {*} texture - * @param {*} pickingMask + * + * @param {*} texture + * @param {*} pickingMask */ applyTexture(texture, pickingMask) { if (this.segment.initialized) { @@ -83,7 +86,7 @@ class Material { } /** - * + * */ textureNotExists() { if (this.segment.initialized) { @@ -95,7 +98,7 @@ class Material { } /** - * + * */ clear() { this.loadingAttempts = 0; diff --git a/src/og/layer/XYZ.js b/src/og/layer/XYZ.js index 1d89690d..577ee569 100644 --- a/src/og/layer/XYZ.js +++ b/src/og/layer/XYZ.js @@ -2,13 +2,13 @@ * @module og/layer/XYZ */ -'use strict'; +"use strict"; -import * as mercator from '../mercator.js'; -import { EPSG3857 } from '../proj/EPSG3857.js'; -import { Layer } from './Layer.js'; -import { stringTemplate } from '../utils/shared.js'; -import { RENDERING } from '../quadTree/quadTree.js'; +import * as mercator from "../mercator.js"; +import { EPSG3857 } from "../proj/EPSG3857.js"; +import { Layer } from "./Layer.js"; +import { stringTemplate } from "../utils/shared.js"; +import { RENDERING } from "../quadTree/quadTree.js"; /** * Represents an imagery tiles source provider. @@ -28,6 +28,7 @@ import { RENDERING } from '../quadTree/quadTree.js'; * @param {boolean} [options.visibility=true] - Layer visibility. * @param {string} [options.crossOrigin=true] - If true, all tiles will have their crossOrigin attribute set to ''. * @param {string} options.url - Tile url source template(see example below). + * @param {string} options.textureFilter - texture gl filter. NEAREST, LINEAR, MIPMAP, ANISOTROPHIC. * @param {layer.XYZ~_urlRewriteCallback} options.urlRewrite - Url rewrite function. * @fires og.layer.XYZ#load * @fires og.layer.XYZ#loadend @@ -41,7 +42,6 @@ import { RENDERING } from '../quadTree/quadTree.js'; * }); */ class XYZ extends Layer { - /** * @param {string} name - Layer name. * @param {*} options @@ -63,7 +63,7 @@ class XYZ extends Layer { /** * @protected */ - this._s = options.subdomains || ['a', 'b', 'c']; + this._s = options.subdomains || ["a", "b", "c"]; /** * Minimal native zoom level when tiles are available. @@ -82,7 +82,7 @@ class XYZ extends Layer { /** * @protected */ - this._crossOrigin = options.crossOrigin === undefined ? '' : options.crossOrigin; + this._crossOrigin = options.crossOrigin === undefined ? "" : options.crossOrigin; /** * Rewrites imagery tile url query. @@ -114,7 +114,6 @@ class XYZ extends Layer { */ setVisibility(visibility) { if (visibility !== this._visibility) { - super.setVisibility(visibility); if (!visibility) { @@ -146,7 +145,6 @@ class XYZ extends Layer { * @param {Material} material - Loads current material. */ loadMaterial(material, forceLoading) { - let seg = material.segment; if (this._isBaseLayer) { @@ -156,37 +154,39 @@ class XYZ extends Layer { } if (this._planet.layerLock.isFree()) { - material.isReady = false; material.isLoading = true; if (this._checkSegment(seg)) { - material.loadingAttempts++; - this._planet._tileLoader.load({ - src: this._getHTTPRequestString(material.segment), - type: 'imageBitmap', - filter: () => (seg.initialized && seg.node.getState() === RENDERING) || forceLoading, - options: {} - }, (response) => { - if (response.status === "ready") { - if (material.isLoading) { - let e = this.events.load; - if (e.handlers.length) { - this.events.dispatch(e, material); + this._planet._tileLoader.load( + { + src: this._getHTTPRequestString(material.segment), + type: "imageBitmap", + filter: () => + (seg.initialized && seg.node.getState() === RENDERING) || forceLoading, + options: {} + }, + (response) => { + if (response.status === "ready") { + if (material.isLoading) { + let e = this.events.load; + if (e.handlers.length) { + this.events.dispatch(e, material); + } + material.applyImage(response.data); + response.data = null; + } + } else if (response.status === "abort") { + material.isLoading = false; + } else if (response.status === "error") { + if (material.isLoading) { + material.textureNotExists(); } - material.applyImage(response.data); - response.data = null; - } - } else if (response.status === "abort") { - material.isLoading = false; - } else if (response.status === "error") { - if (material.isLoading) { - material.textureNotExists(); } } - }); + ); } else { material.textureNotExists(); } @@ -220,7 +220,9 @@ class XYZ extends Layer { * @returns {string} - Url string. */ _getHTTPRequestString(segment) { - return this._urlRewriteCallback ? this._urlRewriteCallback(segment, this.url) : this._createUrl(segment); + return this._urlRewriteCallback + ? this._urlRewriteCallback(segment, this.url) + : this._createUrl(segment); } /** @@ -233,11 +235,9 @@ class XYZ extends Layer { } applyMaterial(material) { - if (material.isReady) { return material.texOffset; } else { - // if (material.loadingAttempts > 20) { // debugger; // } @@ -272,7 +272,9 @@ class XYZ extends Layer { if (pnm) { !pnm.isLoading && !pnm.isReady && this.loadMaterial(pnm, true); } else { - pnm = pn.segment.materials[material.layer._id] = material.layer.createMaterial(pn.segment); + pnm = pn.segment.materials[material.layer._id] = material.layer.createMaterial( + pn.segment + ); this.loadMaterial(pnm, true); } } @@ -305,7 +307,7 @@ class XYZ extends Layer { material.texture = null; if (material.image) { - material.image.src = ''; + material.image.src = ""; material.image = null; } } @@ -360,4 +362,4 @@ const EVENT_NAMES = [ "loadend" ]; -export { XYZ }; \ No newline at end of file +export { XYZ }; diff --git a/src/og/math/Mat4.js b/src/og/math/Mat4.js index 3edfdb8d..d87914f6 100644 --- a/src/og/math/Mat4.js +++ b/src/og/math/Mat4.js @@ -24,7 +24,7 @@ export class Mat4 { * @static * @returns {Mat4} - */ - static get identity() { + static identity() { var res = new Mat4(); res._m[0] = 1; res._m[1] = 0; diff --git a/src/og/scene/Planet.js b/src/og/scene/Planet.js index 5503b658..9ac9a8ba 100644 --- a/src/og/scene/Planet.js +++ b/src/og/scene/Planet.js @@ -90,9 +90,12 @@ const EVENT_NAMES = [ * Main class for rendering planet * @class * @extends {RenderNode} - * @param {string} name - Planet name(Earth by default) - * @param {Ellipsoid} ellipsoid - Planet ellipsoid(WGS84 by default) - * @param {Number} [maxGridSize=128] - Segment maximal grid size + * @param {string} [options.name="Earth"] - Planet name(Earth by default) + * @param {Ellipsoid} [options.ellipsoid] - Planet ellipsoid(WGS84 by default) + * @param {Number} [options.maxGridSize=128] - Segment maximal grid size + * @param {Number} [options.maxEqualZoomAltitude=850000.0] - Maximal altitude since segments on the screen bacame the same zoom level + * @param {Number} [options.minEqualZoomAltitude=10000.0] - Minimal altitude since segments on the screen bacame the same zoom level + * @param {Number} [options.minEqualZoomCameraSlope=0.8] - Minimal camera slope above te globe where segments on the screen bacame the same zoom level * @fires og.scene.Planet#draw * @fires og.scene.Planet#layeradd * @fires og.scene.Planet#baselayerchange @@ -177,6 +180,10 @@ export class Planet extends RenderNode { this._minAltitude = options.minAltitude; this._maxAltitude = options.maxAltitude; + this.maxEqualZoomAltitude = options.maxEqualZoomAltitude || 850000.0; + this.minEqualZoomAltitude = options.minEqualZoomAltitude || 10000.0; + this.minEqualZoomCameraSlope = options.minEqualZoomCameraSlope || 0.8; + /** * Screen mouse pointer projected to planet cartesian position. * @public @@ -427,6 +434,7 @@ export class Planet extends RenderNode { if (minLod) { this._minLodRatio = minLod; } + this._renderCompletedActivated = false; } /** @@ -543,6 +551,8 @@ export class Planet extends RenderNode { * @param {number} factor - Elevation scale. */ setHeightFactor(factor) { + this._renderCompletedActivated = false; + if (this._heightFactor !== factor) { this._heightFactor = factor; this._quadTree.destroyBranches(); @@ -986,13 +996,15 @@ export class Planet extends RenderNode { * @protected */ _collectRenderNodes() { + let cam = this.camera; + this._lodRatio = math.lerp( - this.camera.slope < 0.0 ? 0.0 : this.camera.slope, + cam.slope < 0.0 ? 0.0 : cam.slope, this._maxLodRatio, this._minLodRatio ); - this.camera._insideSegment = null; + cam._insideSegment = null; this._nodeCounterError_ = 0; @@ -1008,12 +1020,12 @@ export class Planet extends RenderNode { this.minCurrZoom = math.MAX; this.maxCurrZoom = math.MIN; - this._quadTree.renderTree(this.camera, 0, null); + this._quadTree.renderTree(cam, 0, null); if ( - this.renderer.activeCamera.slope > 0.8 && - this.renderer.activeCamera._lonLat.height < 850000.0 && - this.renderer.activeCamera._lonLat.height > 10000.0 + cam.slope > this.minEqualZoomCameraSlope && + cam._lonLat.height < this.maxEqualZoomAltitude && + cam._lonLat.height > this.minEqualZoomAltitude ) { this.minCurrZoom = this.maxCurrZoom; @@ -1048,18 +1060,20 @@ export class Planet extends RenderNode { } for (let i = 0, len = temp2.length; i < len; i++) { - temp2[i].renderTree(this.camera, this.maxCurrZoom, null); + temp2[i].renderTree(cam, this.maxCurrZoom, null); } } - this._quadTreeNorth.renderTree(this.camera, 0, null); - this._quadTreeSouth.renderTree(this.camera, 0, null); + this._quadTreeNorth.renderTree(cam, 0, null); + this._quadTreeSouth.renderTree(cam, 0, null); } _globalPreDraw() { - this._distBeforeMemClear += this._prevCamEye.distance(this.camera.eye); - this._prevCamEye.copy(this.camera.eye); - this.renderer.activeCamera.checkFly(); + let cam = this.camera; + + this._distBeforeMemClear += this._prevCamEye.distance(cam.eye); + this._prevCamEye.copy(cam.eye); + cam.checkFly(); // free memory if (this._createdNodesCount > MAX_NODES && this._distBeforeMemClear > 1000.0) { @@ -1110,7 +1124,7 @@ export class Planet extends RenderNode { gl.disable(gl.POLYGON_OFFSET_FILL); if (frustumIndex === cam.FARTHEST_FRUSTUM_INDEX) { - if (this._skipPreRender && (!this._renderCompletedActivated || cam._moved)) { + if (this._skipPreRender && (!this._renderCompletedActivated || cam.isMoved)) { this._collectRenderNodes(); } this._skipPreRender = true; @@ -1134,7 +1148,9 @@ export class Planet extends RenderNode { } gl.blendEquation(gl.FUNC_ADD); + gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); + gl.enable(gl.BLEND); gl.enable(gl.CULL_FACE); diff --git a/src/og/webgl/Handler.js b/src/og/webgl/Handler.js index d66a966b..718d9036 100644 --- a/src/og/webgl/Handler.js +++ b/src/og/webgl/Handler.js @@ -198,26 +198,6 @@ class Handler { callback && (this._frameCallback = callback); } - /** - * Creates NEAREST filter texture. - * @public - * @param {Object} image - Image or Canvas object. - * @returns {Object} - WebGL texture object. - */ - createTexture_n(image) { - var gl = this.gl; - var texture = gl.createTexture(); - gl.bindTexture(gl.TEXTURE_2D, texture); - gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false); - gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - gl.bindTexture(gl.TEXTURE_2D, null); - return texture; - } - /** * Creates empty texture. * @public @@ -349,14 +329,34 @@ class Handler { return texture; } + /** + * Creates NEAREST filter texture. + * @public + * @param {Object} image - Image or Canvas object. + * @returns {Object} - WebGL texture object. + */ + static createTexture_n(handler, image) { + var gl = handler.gl; + var texture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + gl.bindTexture(gl.TEXTURE_2D, null); + return texture; + } + /** * Creates LINEAR filter texture. * @public * @param {Object} image - Image or Canvas object. * @returns {Object} - WebGL texture object. */ - createTexture_l(image) { - var gl = this.gl; + static createTexture_l(handler, image) { + var gl = handler.gl; var texture = gl.createTexture(); gl.bindTexture(gl.TEXTURE_2D, texture); gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image); @@ -374,8 +374,8 @@ class Handler { * @param {Object} image - Image or Canvas object. * @returns {Object} - WebGL texture object. */ - createTexture_mm(image) { - var gl = this.gl; + static createTexture_mm(handler, image) { + var gl = handler.gl; var texture = gl.createTexture(); gl.bindTexture(gl.TEXTURE_2D, texture); gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false); @@ -394,8 +394,8 @@ class Handler { * @param {Object} image - Image or Canvas object. * @returns {Object} - WebGL texture object. */ - createTexture_a(image) { - var gl = this.gl; + static createTexture_a(handler, image) { + var gl = handler.gl; var texture = gl.createTexture(); gl.bindTexture(gl.TEXTURE_2D, texture); gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false); @@ -404,8 +404,8 @@ class Handler { gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR); gl.texParameterf( gl.TEXTURE_2D, - this.extensions.EXT_texture_filter_anisotropic.TEXTURE_MAX_ANISOTROPY_EXT, - this._params.anisotropy + handler.extensions.EXT_texture_filter_anisotropic.TEXTURE_MAX_ANISOTROPY_EXT, + handler._params.anisotropy ); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); @@ -420,7 +420,23 @@ class Handler { * @returns {Object} - WebGL texture object. */ createTexture(image) { - return this.createTexture_a(image); + return Handler.createTexture_a(this, image); + } + + createTexture_n(image) { + return Handler.createTexture_n(this, image); + } + + createTexture_l(image) { + return Handler.createTexture_l(this, image); + } + + createTexture_mm(image) { + return Handler.createTexture_mm(this, image); + } + + createTexture_a(image) { + return Handler.createTexture_a(this, image); } /** @@ -578,7 +594,6 @@ class Handler { * @public */ initialize() { - if (this._id) { this.canvas = document.getElementById(this._id); } else { @@ -770,7 +785,6 @@ class Handler { * @param {number} h - Canvas height. */ setSize(w, h) { - if (w > MAX_SIZE) { w = MAX_SIZE; } @@ -905,7 +919,7 @@ class Handler { if (params && params.color) { imgCnv = new ImageCanvas(2, 2); imgCnv.fillColor(params.color); - texture = this.createTexture_n(imgCnv._canvas); + texture = Handler.createTexture_n(this, imgCnv._canvas); texture.default = true; success(texture); } else if (params && params.url) { @@ -920,7 +934,7 @@ class Handler { } else { imgCnv = new ImageCanvas(2, 2); imgCnv.fillColor("#C5C5C5"); - texture = this.createTexture_n(imgCnv._canvas); + texture = Handler.createTexture_n(this, imgCnv._canvas); texture.default = true; success(texture); } @@ -1019,4 +1033,11 @@ class Handler { } } +export const createTexture = { + NEAREST: Handler.createTexture_n, + LINEAR: Handler.createTexture_l, + MIPMAP: Handler.createTexture_mm, + ANISOTROPHIC: Handler.createTexture_a +}; + export { Handler }; From 25f78b5d1d6accb9f2bf4cf040dc1b4d866b0df8 Mon Sep 17 00:00:00 2001 From: Zemledelec Date: Wed, 10 Nov 2021 13:35:32 +0300 Subject: [PATCH 22/27] v0.11.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fd8c6990..98c3edd1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@openglobus/og", - "version": "0.11.3", + "version": "0.11.4", "description": "[OpenGlobus](http://www.openglobus.org/) is a javascript library designed to display interactive 3d maps and planets with map tiles, imagery and vector data, markers and 3d objects. It uses the WebGL technology, open source and completely free.", "directories": { "example": "./sandbox" From 5a2a2d07e2bdc86f8db40571d3178c7da27a00eb Mon Sep 17 00:00:00 2001 From: Zemledelec Date: Thu, 11 Nov 2021 22:06:43 +0300 Subject: [PATCH 23/27] fixed lint --- src/og/layer/Layer.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/og/layer/Layer.js b/src/og/layer/Layer.js index a387e479..1280d1e2 100644 --- a/src/og/layer/Layer.js +++ b/src/og/layer/Layer.js @@ -33,6 +33,7 @@ export const FADING_FACTOR = 0.29; * @param {Vec3} [options.ambient=[0.1, 0.1, 0.21]] - Ambient RGB color. * @param {Vec3} [options.diffuse=[1.0, 1.0, 1.0]] - Diffuse RGB color. * @param {Vec3} [options.specular=[0.00025, 0.00015, 0.0001]] - Specular RGB color. + * @param {string} [options.textureFilter=["anisotrophyc"]] - Image texture filter. Available values: "nearest", "linear", "mipmap" and "anisotrophic". * @param {Number} [options.shininess=100] - Shininess. * * @fires og.Layer#visibilitychange @@ -187,7 +188,7 @@ class Layer { if (options.textureFilter) { this.createTexture = createTexture[options.textureFilter.trim().toUpperCase()] || - createTexture[textureFilter.LINEAR]; + createTexture.ANISOTROPHIC; } else { this.createTexture = createTexture.ANISOTROPHIC; } From 0228d3841616bc56bcec6ea52fc8b896ecaf5d84 Mon Sep 17 00:00:00 2001 From: Zemledelec Date: Thu, 11 Nov 2021 22:07:41 +0300 Subject: [PATCH 24/27] v0.11.5 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 98c3edd1..71413c6d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@openglobus/og", - "version": "0.11.4", + "version": "0.11.5", "description": "[OpenGlobus](http://www.openglobus.org/) is a javascript library designed to display interactive 3d maps and planets with map tiles, imagery and vector data, markers and 3d objects. It uses the WebGL technology, open source and completely free.", "directories": { "example": "./sandbox" From 275b377ae36f44f4f1510481b5e71062966d1c0f Mon Sep 17 00:00:00 2001 From: Zemledelec Date: Thu, 11 Nov 2021 23:18:56 +0300 Subject: [PATCH 25/27] fixed parameter anisotropic name --- src/og/layer/Layer.js | 6 +++--- src/og/webgl/Handler.js | 5 ++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/og/layer/Layer.js b/src/og/layer/Layer.js index 1280d1e2..355dfa6b 100644 --- a/src/og/layer/Layer.js +++ b/src/og/layer/Layer.js @@ -33,7 +33,7 @@ export const FADING_FACTOR = 0.29; * @param {Vec3} [options.ambient=[0.1, 0.1, 0.21]] - Ambient RGB color. * @param {Vec3} [options.diffuse=[1.0, 1.0, 1.0]] - Diffuse RGB color. * @param {Vec3} [options.specular=[0.00025, 0.00015, 0.0001]] - Specular RGB color. - * @param {string} [options.textureFilter=["anisotrophyc"]] - Image texture filter. Available values: "nearest", "linear", "mipmap" and "anisotrophic". + * @param {string} [options.textureFilter=["anisotropic"]] - Image texture filter. Available values: "nearest", "linear", "mipmap" and "anisotropic". * @param {Number} [options.shininess=100] - Shininess. * * @fires og.Layer#visibilitychange @@ -188,9 +188,9 @@ class Layer { if (options.textureFilter) { this.createTexture = createTexture[options.textureFilter.trim().toUpperCase()] || - createTexture.ANISOTROPHIC; + createTexture.ANISOTROPIC; } else { - this.createTexture = createTexture.ANISOTROPHIC; + this.createTexture = createTexture.ANISOTROPIC; } /** diff --git a/src/og/webgl/Handler.js b/src/og/webgl/Handler.js index 718d9036..11b17abf 100644 --- a/src/og/webgl/Handler.js +++ b/src/og/webgl/Handler.js @@ -27,10 +27,9 @@ const vendorPrefixes = ["", "WEBKIT_", "MOZ_"]; * @param {string} id - Canvas element id that WebGL handler assing with. If it's null * or undefined creates hidden canvas and handler bacomes hidden. * @param {Object} [params] - Handler options: - * @param {number} [params.anisotropy] - Anisitropy filter degree. 8 is default. + * @param {number} [params.anisotropy] - Anisotropy filter degree. 8 is default. * @param {number} [params.width] - Hidden handler width. 256 is default. * @param {number} [params.height] - Hidden handler height. 256 is default. - * @param {Object} [param.scontext] - Native WebGL context attributes. See https://www.khronos.org/registry/webgl/specs/latest/1.0/#WEBGLCONTEXTATTRIBUTES * @param {Array.} [params.extensions] - Additional WebGL extension list. Available by default: EXT_texture_filter_anisotropic. */ class Handler { @@ -1037,7 +1036,7 @@ export const createTexture = { NEAREST: Handler.createTexture_n, LINEAR: Handler.createTexture_l, MIPMAP: Handler.createTexture_mm, - ANISOTROPHIC: Handler.createTexture_a + ANISOTROPIC: Handler.createTexture_a }; export { Handler }; From e53ab91453b385a8a571a04def678624b4bef95c Mon Sep 17 00:00:00 2001 From: Zemledelec Date: Thu, 11 Nov 2021 23:20:53 +0300 Subject: [PATCH 26/27] fixed jsdoc param description --- src/og/layer/Layer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/og/layer/Layer.js b/src/og/layer/Layer.js index 355dfa6b..1291804c 100644 --- a/src/og/layer/Layer.js +++ b/src/og/layer/Layer.js @@ -33,7 +33,7 @@ export const FADING_FACTOR = 0.29; * @param {Vec3} [options.ambient=[0.1, 0.1, 0.21]] - Ambient RGB color. * @param {Vec3} [options.diffuse=[1.0, 1.0, 1.0]] - Diffuse RGB color. * @param {Vec3} [options.specular=[0.00025, 0.00015, 0.0001]] - Specular RGB color. - * @param {string} [options.textureFilter=["anisotropic"]] - Image texture filter. Available values: "nearest", "linear", "mipmap" and "anisotropic". + * @param {string} [options.textureFilter="anisotropic"] - Image texture filter. Available values: "nearest", "linear", "mipmap" and "anisotropic". * @param {Number} [options.shininess=100] - Shininess. * * @fires og.Layer#visibilitychange From 718ef2b3f89e1aa74f1274a215370171f81107b8 Mon Sep 17 00:00:00 2001 From: Thibaut Lassalle Date: Fri, 12 Nov 2021 09:32:48 -0800 Subject: [PATCH 27/27] update libs --- .github/workflows/npm-publish.yml | 1 - package-lock.json | 13787 ++++++++++++++++++++++++++-- package.json | 6 +- 3 files changed, 13123 insertions(+), 671 deletions(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index cbd1c742..2ebf816c 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -28,7 +28,6 @@ jobs: with: node-version: 16 registry-url: https://registry.npmjs.org/ - - run: npm ci - run: npm run generate_types - run: npm publish env: diff --git a/package-lock.json b/package-lock.json index f014f869..dd1af156 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,8 +1,12435 @@ { "name": "@openglobus/og", - "version": "0.11.2", - "lockfileVersion": 1, + "version": "0.11.3", + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "@openglobus/og", + "version": "0.11.3", + "license": "MIT", + "devDependencies": { + "@babel/preset-env": "^7.16.0", + "@rollup/plugin-json": "^4.1.0", + "@types/jest": "^27.0.2", + "eslint": "^8.2.0", + "husky": "^7.0.4", + "jaguarjs-jsdoc": "^1.1.0", + "jest": "^27.3.1", + "jest-canvas-mock": "^2.3.1", + "jest-webgl-canvas-mock": "^0.2.3", + "jsdoc": "^3.6.7", + "lint-staged": "^11.2.6", + "local-web-server": "^5.1.1", + "msdf-bmfont-xml": "^2.5.4", + "postcss": "^8.3.11", + "prettier": "^2.4.1", + "rollup": "^2.60.0", + "rollup-plugin-postcss": "^4.0.1", + "rollup-plugin-terser": "^7.0.2", + "typescript": "^4.4.4" + } + }, + "node_modules/@75lb/deep-merge": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@75lb/deep-merge/-/deep-merge-1.1.1.tgz", + "integrity": "sha512-xvgv6pkMGBA6GwdyJbNAnDmfAIR/DfWhrj9jgWh3TY7gRm3KO46x/GPjRg6wJ0nOepwqrNxFfojebh0Df4h4Tw==", + "dev": true, + "dependencies": { + "lodash.assignwith": "^4.2.0", + "typical": "^7.1.1" + }, + "engines": { + "node": ">=12.17" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.0.tgz", + "integrity": "sha512-DGjt2QZse5SGd9nfOSqO4WLJ8NN/oHkijbXbPrxuoJO3oIPJL3TciZs9FX+cOHNiY9E9l0opL8g7BmLe3T+9ew==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", + "dev": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "regexpu-core": "^4.7.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.4.tgz", + "integrity": "sha512-OrpPZ97s+aPi6h2n1OXzdhVis1SGSsMU2aMHgLcOKfsp4/v1NWpx3CWT3lBj5eeBq9cDkPkh+YCfdF7O12uNDQ==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", + "dev": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.0.tgz", + "integrity": "sha512-MLM1IOMe9aQBqMWxcRw8dcb9jlM86NIw7KA0Wri91Xkfied+dE0QuBFSBjMNvqzmS0OSIDsMNC24dBEkPUi7ew==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", + "dev": true, + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz", + "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.3", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.15.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.3.tgz", + "integrity": "sha512-dcNwU1O4sx57ClvLBVFbEgx0UZWfd0JQX5X6fxFRCLHelFBGXFfSz6Y0FAq2PEwUqlqLkdVjVr4VASEOuUnLJw==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.0.tgz", + "integrity": "sha512-nyYmIo7ZqKsY6P4lnVmBlxp9B3a96CscbLotlsNuktMHahkDwoPYEjXrZHU0Tj844Z9f1IthVxQln57mhkcExw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "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-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "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-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "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-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-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "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-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.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz", + "integrity": "sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==", + "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-transform-arrow-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", + "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-transform-async-to-generator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", + "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-transform-block-scoping": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", + "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-transform-classes": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", + "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-transform-destructuring": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", + "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-transform-dotall-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", + "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-transform-exponentiation-operator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", + "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-transform-function-name": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", + "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-transform-member-expression-literals": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", + "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-transform-modules-amd": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", + "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-transform-object-super": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", + "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-transform-property-literals": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", + "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-transform-regenerator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", + "dev": true, + "dependencies": { + "regenerator-transform": "^0.14.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", + "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-transform-shorthand-properties": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", + "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-transform-spread": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", + "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-transform-template-literals": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", + "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-transform-typeof-symbol": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", + "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-transform-unicode-escapes": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", + "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-transform-unicode-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.0.tgz", + "integrity": "sha512-cdTu/W0IrviamtnZiTfixPfIncr2M1VqRrkjzZWlr1B4TVYimCFK5jkyOdP4qw2MrlKHi+b3ORj6x8GoCew8Dg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.0", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.0", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.0", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.2.3", + "babel-plugin-polyfill-corejs3": "^0.3.0", + "babel-plugin-polyfill-regenerator": "^0.2.3", + "core-js-compat": "^3.19.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", + "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", + "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.3", + "@babel/types": "^7.16.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.15.7", + "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/@eslint/eslintrc": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz", + "integrity": "sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.0.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/@humanwhocodes/config-array": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz", + "integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "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/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/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": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.3.1.tgz", + "integrity": "sha512-RkFNWmv0iui+qsOr/29q9dyfKTTT5DCuP31kUwg7rmOKPT/ozLeGLKJKVIiOfbiKyleUZKIrHwhmiZWVe8IMdw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.3.1", + "jest-util": "^27.3.1", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.3.1.tgz", + "integrity": "sha512-DMNE90RR5QKx0EA+wqe3/TNEwiRpOkhshKNxtLxd4rt3IZpCt+RSL+FoJsGeblRZmqdK4upHA/mKKGPPRAifhg==", + "dev": true, + "dependencies": { + "@jest/console": "^27.3.1", + "@jest/reporters": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/transform": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^27.3.0", + "jest-config": "^27.3.1", + "jest-haste-map": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.3.1", + "jest-resolve-dependencies": "^27.3.1", + "jest-runner": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", + "jest-watcher": "^27.3.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", + "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "jest-mock": "^27.3.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", + "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", + "dev": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.3.1", + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.3.1.tgz", + "integrity": "sha512-Q651FWiWQAIFiN+zS51xqhdZ8g9b88nGCobC87argAxA7nMfNQq0Q0i9zTfQYgLa6qFXk2cGANEqfK051CZ8Pg==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.3.1", + "@jest/types": "^27.2.5", + "expect": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.3.1.tgz", + "integrity": "sha512-m2YxPmL9Qn1emFVgZGEiMwDntDxRRQ2D58tiDQlwYTg5GvbFOKseYCcHtn0WsI8CG4vzPglo3nqbOiT8ySBT/w==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/transform": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^27.3.1", + "jest-resolve": "^27.3.1", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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/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/@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/source-map": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.0.6.tgz", + "integrity": "sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/source-map/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/@jest/test-result": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.3.1.tgz", + "integrity": "sha512-mLn6Thm+w2yl0opM8J/QnPTqrfS4FoXsXF2WIWJb2O/GBSyResL71BRuMYbYRsGt7ELwS5JGcEcGb52BNrumgg==", + "dev": true, + "dependencies": { + "@jest/console": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.3.1.tgz", + "integrity": "sha512-siySLo07IMEdSjA4fqEnxfIX8lB/lWYsBPwNFtkOvsFQvmBrL3yj3k3uFNZv/JDyApTakRpxbKLJ3CT8UGVCrA==", + "dev": true, + "dependencies": { + "@jest/test-result": "^27.3.1", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.3.1", + "jest-runtime": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", + "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.2.5", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.3.1", + "jest-regex-util": "^27.0.6", + "jest-util": "^27.3.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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/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/@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": "27.2.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz", + "integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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/@jimp/bmp": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.6.8.tgz", + "integrity": "sha512-uxVgSkI62uAzk5ZazYHEHBehow590WAkLKmDXLzkr/XP/Hv2Fx1T4DKwJ/15IY5ktq5VAhAUWGXTyd8KWFsx7w==", + "dev": true, + "dependencies": { + "@jimp/utils": "^0.6.8", + "bmp-js": "^0.1.0", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/core": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.6.8.tgz", + "integrity": "sha512-JOFqBBcSNiDiMZJFr6OJqC6viXj5NVBQISua0eacoYvo4YJtTajOIxC4MqWyUmGrDpRMZBR8QhSsIOwsFrdROA==", + "dev": true, + "dependencies": { + "@jimp/utils": "^0.6.8", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "core-js": "^2.5.7", + "exif-parser": "^0.1.12", + "file-type": "^9.0.0", + "load-bmfont": "^1.3.1", + "mkdirp": "0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" + } + }, + "node_modules/@jimp/core/node_modules/minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "node_modules/@jimp/core/node_modules/mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", + "dev": true, + "dependencies": { + "minimist": "0.0.8" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/@jimp/custom": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.6.8.tgz", + "integrity": "sha512-FrYlzZRVXP2vuVwd7Nc2dlK+iZk4g6IaT1Ib8Z6vU5Kkwlt83FJIPJ2UUFABf3bF5big0wkk8ZUihWxE4Nzdng==", + "dev": true, + "dependencies": { + "@jimp/core": "^0.6.8", + "core-js": "^2.5.7" + } + }, + "node_modules/@jimp/gif": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.6.8.tgz", + "integrity": "sha512-yyOlujjQcgz9zkjM5ihZDEppn9d1brJ7jQHP5rAKmqep0G7FU1D0AKcV+Ql18RhuI/CgWs10wAVcrQpmLnu4Yw==", + "dev": true, + "dependencies": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7", + "omggif": "^1.0.9" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/jpeg": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.6.8.tgz", + "integrity": "sha512-rGtXbYpFXAn471qLpTGvhbBMNHJo5KiufN+vC5AWyufntmkt5f0Ox2Cx4ijuBMDtirZchxbMLtrfGjznS4L/ew==", + "dev": true, + "dependencies": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7", + "jpeg-js": "^0.3.4" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-blit": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.6.8.tgz", + "integrity": "sha512-7Tl6YpKTSpvwQbnGNhsfX2zyl3jRVVopd276Y2hF2zpDz9Bycow7NdfNU/4Nx1jaf96X6uWOtSVINcQ7rGd47w==", + "dev": true, + "dependencies": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-blur": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.6.8.tgz", + "integrity": "sha512-NpZCMKxXHLDQsX9zPlWtpMA660DQStY6/z8ZetyxCDbqrLe9YCXpeR4MNhdJdABIiwTm1W5FyFF4kp81PHJx3Q==", + "dev": true, + "dependencies": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-color": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.6.8.tgz", + "integrity": "sha512-jjFyU0zNmGOH2rjzHuOMU4kaia0oo82s/7UYfn5h7OUkmUZTd6Do3ZSK1PiXA7KR+s4B76/Omm6Doh/0SGb7BQ==", + "dev": true, + "dependencies": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7", + "tinycolor2": "^1.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-contain": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.6.8.tgz", + "integrity": "sha512-p/P2wCXhAzbmEgXvGsvmxLmbz45feF6VpR4m9suPSOr8PC/i/XvTklTqYEUidYYAft4vHgsYJdS74HKSMnH8lw==", + "dev": true, + "dependencies": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5", + "@jimp/plugin-scale": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-cover": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.6.8.tgz", + "integrity": "sha512-2PvWgk+PJfRsfWDI1G8Fpjrsu0ZlpNyZxO2+fqWlVo6y/y2gP4v08FqvbkcqSjNlOu2IDWIFXpgyU0sTINWZLg==", + "dev": true, + "dependencies": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-crop": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5", + "@jimp/plugin-scale": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-crop": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.6.8.tgz", + "integrity": "sha512-CbrcpWE2xxPK1n/JoTXzhRUhP4mO07mTWaSavenCg664oQl/9XCtL+A0FekuNHzIvn4myEqvkiTwN7FsbunS/Q==", + "dev": true, + "dependencies": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-displace": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.6.8.tgz", + "integrity": "sha512-RmV2bPxoPE6mrPxtYSPtHxm2cGwBQr5a2p+9gH6SPy+eUMrbGjbvjwKNfXWUYD0leML+Pt5XOmAS9pIROmuruQ==", + "dev": true, + "dependencies": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-dither": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.6.8.tgz", + "integrity": "sha512-x6V/qjxe+xypjpQm7GbiMNqci1EW5UizrcebOhHr8AHijOEqHd2hjXh5f6QIGfrkTFelc4/jzq1UyCsYntqz9Q==", + "dev": true, + "dependencies": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-flip": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.6.8.tgz", + "integrity": "sha512-4il6Da6G39s9MyWBEee4jztEOUGJ40E6OlPjkMrdpDNvge6hYEAB31BczTYBP/CEY74j4LDSoY5LbcU4kv06yA==", + "dev": true, + "dependencies": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-rotate": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-gaussian": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.6.8.tgz", + "integrity": "sha512-pVOblmjv7stZjsqloi4YzHVwAPXKGdNaHPhp4KP4vj41qtc6Hxd9z/+VWGYRTunMFac84gUToe0UKIXd6GhoKw==", + "dev": true, + "dependencies": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-invert": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.6.8.tgz", + "integrity": "sha512-11zuLiXDHr6tFv4U8aieXqNXQEKbDbSBG/h+X62gGTNFpyn8EVPpncHhOqrAFtZUaPibBqMFlNJ15SzwC7ExsQ==", + "dev": true, + "dependencies": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-mask": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.6.8.tgz", + "integrity": "sha512-hZJ0OiKGJyv7hDSATwJDkunB1Ie80xJnONMgpUuUseteK45YeYNBOiZVUe8vum8QI1UwavgBzcvQ9u4fcgXc9g==", + "dev": true, + "dependencies": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-normalize": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.6.8.tgz", + "integrity": "sha512-Q4oYhU+sSyTJI7pMZlg9/mYh68ujLfOxXzQGEXuw0sHGoGQs3B0Jw7jmzGa6pIS06Hup5hD2Zuh1ppvMdjJBfQ==", + "dev": true, + "dependencies": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-print": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.6.8.tgz", + "integrity": "sha512-2aokejGn4Drv1FesnZGqh5KEq0FQtR0drlmtyZrBH+r9cx7hh0Qgf4D1BOTDEgXkfSSngjGRjKKRW/fwOrVXYw==", + "dev": true, + "dependencies": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7", + "load-bmfont": "^1.4.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-resize": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.6.8.tgz", + "integrity": "sha512-27nPh8L1YWsxtfmV/+Ub5dOTpXyC0HMF2cu52RQSCYxr+Lm1+23dJF70AF1poUbUe+FWXphwuUxQzjBJza9UoA==", + "dev": true, + "dependencies": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-rotate": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.6.8.tgz", + "integrity": "sha512-GbjETvL05BDoLdszNUV4Y0yLkHf177MnqGqilA113LIvx9aD0FtUopGXYfRGVvmtTOTouoaGJUc+K6qngvKxww==", + "dev": true, + "dependencies": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5", + "@jimp/plugin-crop": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-scale": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.6.8.tgz", + "integrity": "sha512-GzIYWR/oCUK2jAwku23zt19V1ssaEU4pL0x2XsLNKuuJEU6DvEytJyTMXCE7OLG/MpDBQcQclJKHgiyQm5gIOQ==", + "dev": true, + "dependencies": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugins": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.6.8.tgz", + "integrity": "sha512-fMcTI72Vn/Lz6JftezTURmyP5ml/xGMe0Ljx2KRJ85IWyP33vDmGIUuutFiBEbh2+y7lRT+aTSmjs0QGa/xTmQ==", + "dev": true, + "dependencies": { + "@jimp/plugin-blit": "^0.6.8", + "@jimp/plugin-blur": "^0.6.8", + "@jimp/plugin-color": "^0.6.8", + "@jimp/plugin-contain": "^0.6.8", + "@jimp/plugin-cover": "^0.6.8", + "@jimp/plugin-crop": "^0.6.8", + "@jimp/plugin-displace": "^0.6.8", + "@jimp/plugin-dither": "^0.6.8", + "@jimp/plugin-flip": "^0.6.8", + "@jimp/plugin-gaussian": "^0.6.8", + "@jimp/plugin-invert": "^0.6.8", + "@jimp/plugin-mask": "^0.6.8", + "@jimp/plugin-normalize": "^0.6.8", + "@jimp/plugin-print": "^0.6.8", + "@jimp/plugin-resize": "^0.6.8", + "@jimp/plugin-rotate": "^0.6.8", + "@jimp/plugin-scale": "^0.6.8", + "core-js": "^2.5.7", + "timm": "^1.6.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/png": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.6.8.tgz", + "integrity": "sha512-JHHg/BZ7KDtHQrcG+a7fztw45rdf7okL/YwkN4qU5FH7Fcrp41nX5QnRviDtD9hN+GaNC7kvjvcqRAxW25qjew==", + "dev": true, + "dependencies": { + "@jimp/utils": "^0.6.8", + "core-js": "^2.5.7", + "pngjs": "^3.3.3" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/tiff": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.6.8.tgz", + "integrity": "sha512-iWHbxd+0IKWdJyJ0HhoJCGYmtjPBOusz1z1HT/DnpePs/Lo3TO4d9ALXqYfUkyG74ZK5jULZ69KLtwuhuJz1bg==", + "dev": true, + "dependencies": { + "core-js": "^2.5.7", + "utif": "^2.0.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/types": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.6.8.tgz", + "integrity": "sha512-vCZ/Cp2osy69VP21XOBACfHI5HeR60Rfd4Jidj4W73UL+HrFWOtyQiJ7hlToyu1vI5mR/NsUQpzyQvz56ADm5A==", + "dev": true, + "dependencies": { + "@jimp/bmp": "^0.6.8", + "@jimp/gif": "^0.6.8", + "@jimp/jpeg": "^0.6.8", + "@jimp/png": "^0.6.8", + "@jimp/tiff": "^0.6.8", + "core-js": "^2.5.7", + "timm": "^1.6.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/utils": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.6.8.tgz", + "integrity": "sha512-7RDfxQ2C/rarNG9iso5vmnKQbcvlQjBIlF/p7/uYj72WeZgVCB+5t1fFBKJSU4WhniHX4jUMijK+wYGE3Y3bGw==", + "dev": true, + "dependencies": { + "core-js": "^2.5.7" + } + }, + "node_modules/@koa/cors": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@koa/cors/-/cors-3.1.0.tgz", + "integrity": "sha512-7ulRC1da/rBa6kj6P4g2aJfnET3z8Uf3SWu60cjbtxTA5g8lxRdX/Bd2P92EagGwwAhANeNw8T8if99rJliR6Q==", + "dev": true, + "dependencies": { + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@rollup/plugin-json": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", + "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.0.8" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "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, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.1.16", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.16.tgz", + "integrity": "sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", + "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", + "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.3.0" + } + }, + "node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "27.0.2", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.2.tgz", + "integrity": "sha512-4dRxkS/AFX0c5XW6IPMNOydLn2tEhNhJV7DnYK+0bjoJZ+QTmfucBlihX7aoEsh/ocYtkLC73UbnBXBXIxsULA==", + "dev": true, + "dependencies": { + "jest-diff": "^27.0.0", + "pretty-format": "^27.0.0" + } + }, + "node_modules/@types/node": { + "version": "16.11.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.7.tgz", + "integrity": "sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "node_modules/@types/prettier": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.1.tgz", + "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==", + "dev": true + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", + "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", + "dev": true + }, + "node_modules/abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", + "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "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": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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/alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escape-sequences": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-6.2.0.tgz", + "integrity": "sha512-tDwbanmlgu4wVCNM75YvwugiDn7iZtCewniuxZgLBbdVy/li7ufZhNpqPR7ZJgJVI2TzRcElDKBNlLaI+RSzbQ==", + "dev": true, + "dependencies": { + "array-back": "^6.2.0" + }, + "engines": { + "node": ">=12.17" + } + }, + "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-base": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==", + "dev": true + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arabic-persian-reshaper": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arabic-persian-reshaper/-/arabic-persian-reshaper-1.0.1.tgz", + "integrity": "sha512-VYBjkhz6o4W1Xt4mD2LAReljJpLSw5CUZMqSBDIQRvFgUSlTKEYghapgBWvkeMWF4W+KF3Fm+/z8EywJU4PBeg==", + "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-back": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.0.tgz", + "integrity": "sha512-mixVv03GOOn/ubHE4STQ+uevX42ETdk0JoMVEjNkSOCT7WgERh7C8/+NyhWYNpE3BN69pxFyJIBcF7CxWz/+4A==", + "dev": true, + "engines": { + "node": ">=12.17" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "node_modules/babel-jest": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.3.1.tgz", + "integrity": "sha512-SjIF8hh/ir0peae2D6S6ZKRhUy7q/DnpH7k/V6fT4Bgs/LXXUztOpX4G2tCgq8mLo5HA9mN6NmlFMeYtKmIsTQ==", + "dev": true, + "dependencies": { + "@jest/transform": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^27.2.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", + "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", + "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-jest-hoist": { + "version": "27.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.2.0.tgz", + "integrity": "sha512-TOux9khNKdi64mW+0OIhcmbAn75tTlzKhxmiNXevQaPbrBYK7YKjP1jl6NHTJ6XR5UgUrJbCnWlKVnJn29dfjw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.3.tgz", + "integrity": "sha512-NDZ0auNRzmAfE1oDDPW2JhzIMXUk+FFe2ICejmt5T4ocKgiQx3e0VCRx9NCAidcMtL2RUZaWtXnmjTCkx0tcbA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.4", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.3.0.tgz", + "integrity": "sha512-JLwi9vloVdXLjzACL80j24bG6/T1gYxwowG44dg6HN/7aTPdyPbJJidf6ajoA3RPHHtW0j9KMrSOLpIZpAnPpg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.2.4", + "core-js-compat": "^3.18.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.3.tgz", + "integrity": "sha512-JVE78oRZPKFIeUqFGrSORNzQnrDwZR16oiWeGM8ZyjBn2XAT5OjP+wXx5ESuo33nUsFUEJYjtklnsKbxW5L+7g==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.2.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.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": "27.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.2.0.tgz", + "integrity": "sha512-z7MgQ3peBwN5L5aCqBKnF6iqdlvZvFUQynEhu0J+X9nHLU72jO3iY331lcYrg+AssJ8q7xsv5/3AICzVmJ/wvg==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^27.2.0", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "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/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/bmp-js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", + "integrity": "sha1-4Fpj95amwf8l9Hcex62twUjAcjM=", + "dev": true + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "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/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "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": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "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": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", + "dev": true, + "engines": { + "node": ">=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/byte-size": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-8.1.0.tgz", + "integrity": "sha512-FkgMTAg44I0JtEaUAvuZTtU2a2YDmBRbQxdsQNSMtLCjhG0hMcF5b1IMN9UjSCJaU4nvlj/GER7B9sI4nKdCgA==", + "dev": true, + "engines": { + "node": ">=12.17" + } + }, + "node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cache-content-type": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", + "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", + "dev": true, + "dependencies": { + "mime-types": "^2.1.18", + "ylru": "^1.2.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/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, + "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.30001280", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001280.tgz", + "integrity": "sha512-kFXwYvHe5rix25uwueBxC569o53J6TpnGu0BEEn+6Lhl2vsnAumRFWEBhDft1fwyo6m1r4i+RqA4+163FpeFcA==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/catharsis": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", + "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", + "dev": true, + "dependencies": { + "lodash": "^4.17.15" + }, + "engines": { + "node": ">= 10" + } + }, + "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/ci-info": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "dev": true + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-progress": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-2.1.1.tgz", + "integrity": "sha512-TSJw3LY9ZRSis7yYzQ7flIdtQMbacd9oYoiFphJhI4SzgmqF0zErO+uNv0lbUjk1L4AGfHQJ4OVYYzW+JV66KA==", + "dev": true, + "dependencies": { + "colors": "^1.1.2", + "string-width": "^2.1.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-progress/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-progress/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-progress/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-progress/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/co-body": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/co-body/-/co-body-6.1.0.tgz", + "integrity": "sha512-m7pOT6CdLN7FuXUcpuz/8lfQ/L77x8SchHCF4G0RBTJO20Wzmhn5Sp4/5WsKy8OSpifBSUrmg83qEqaDHdyFuQ==", + "dev": true, + "dependencies": { + "inflation": "^2.0.0", + "qs": "^6.5.2", + "raw-body": "^2.3.3", + "type-is": "^1.6.16" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "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": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/colord": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.1.tgz", + "integrity": "sha512-4LBMSt09vR0uLnPVkOUBnmxgoaeN4ewRbx801wY/bXcltXfpR/G46OdWn96XpYmCWuYvO46aBZP4NgX8HpNAcw==", + "dev": true + }, + "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/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/command-line-args": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.0.tgz", + "integrity": "sha512-4zqtU1hYsSJzcJBOcNZIbW5Fbk9BkjCp1pZVhQKoRaWL5J7N4XphDLwo8aWwdQpTugxwu+jf9u2ZhkXiqp5Z6A==", + "dev": true, + "dependencies": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/command-line-args/node_modules/array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/command-line-args/node_modules/typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/command-line-usage": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.1.tgz", + "integrity": "sha512-F59pEuAR9o1SF/bD0dQBDluhpT4jJQNWUHEuVBqpDmCUo6gPjCi+m9fCWnWZVR/oG6cMTUms4h+3NPl74wGXvA==", + "dev": true, + "dependencies": { + "array-back": "^4.0.1", + "chalk": "^2.4.2", + "table-layout": "^1.0.1", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/command-line-usage/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/command-line-usage/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/common-log-format": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/common-log-format/-/common-log-format-1.0.0.tgz", + "integrity": "sha512-fFn/WPNbsTCGTTwdCpZfVZSa5mgqMEkA0gMTRApFSlEsYN+9B2FPfiqch5FT+jsv5IV1RHV3GeZvCa7Qg+jssw==", + "dev": true, + "bin": { + "clf": "bin/cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "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, + "dependencies": { + "source-map": "^0.6.1" + } + }, + "node_modules/concat-with-sourcemaps/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/content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/cookies": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", + "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", + "dev": true, + "dependencies": { + "depd": "~2.0.0", + "keygrip": "~1.1.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/copy-to": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/copy-to/-/copy-to-2.0.1.tgz", + "integrity": "sha1-JoD7uAaKSNCGVrYJgJK9r8kG9KU=", + "dev": true + }, + "node_modules/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", + "dev": true, + "hasInstallScript": true + }, + "node_modules/core-js-compat": { + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", + "dev": true, + "dependencies": { + "browserslist": "^4.17.6", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/create-mixin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/create-mixin/-/create-mixin-3.0.0.tgz", + "integrity": "sha512-LkdMqnWT9LaqBN4huqpUnMz56Yr1mVSoCduAd2xXefgH/YZP2sXCMAyztXjk4q8hTF/TlcDa+zQW2aTgGdjjKQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-color-names": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-1.0.1.tgz", + "integrity": "sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz", + "integrity": "sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA==", + "dev": true, + "dependencies": { + "timsort": "^0.3.0" + }, + "engines": { + "node": ">= 10" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-select": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", + "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" + }, + "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, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-tree/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/css-what": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "dev": true, + "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, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssfontparser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/cssfontparser/-/cssfontparser-1.2.1.tgz", + "integrity": "sha1-9AIvyPlwDGgCnVQghK+69CWj8+M=", + "dev": true + }, + "node_modules/cssnano": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.10.tgz", + "integrity": "sha512-YfNhVJJ04imffOpbPbXP2zjIoByf0m8E2c/s/HnvSvjXgzXMfgopVjAEGvxYOjkOpWuRQDg/OZFjO7WW94Ri8w==", + "dev": true, + "dependencies": { + "cssnano-preset-default": "^5.1.6", + "is-resolvable": "^1.1.0", + "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.1.6", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.6.tgz", + "integrity": "sha512-X2nDeNGBXc0486oHjT2vSj+TdeyVsxRvJUxaOH50hOM6vSDLkKd0+59YXpSZRInJ4sNtBOykS4KsPfhdrU/35w==", + "dev": true, + "dependencies": { + "css-declaration-sorter": "^6.0.3", + "cssnano-utils": "^2.0.1", + "postcss-calc": "^8.0.0", + "postcss-colormin": "^5.2.1", + "postcss-convert-values": "^5.0.2", + "postcss-discard-comments": "^5.0.1", + "postcss-discard-duplicates": "^5.0.1", + "postcss-discard-empty": "^5.0.1", + "postcss-discard-overridden": "^5.0.1", + "postcss-merge-longhand": "^5.0.3", + "postcss-merge-rules": "^5.0.2", + "postcss-minify-font-values": "^5.0.1", + "postcss-minify-gradients": "^5.0.3", + "postcss-minify-params": "^5.0.1", + "postcss-minify-selectors": "^5.1.0", + "postcss-normalize-charset": "^5.0.1", + "postcss-normalize-display-values": "^5.0.1", + "postcss-normalize-positions": "^5.0.1", + "postcss-normalize-repeat-style": "^5.0.1", + "postcss-normalize-string": "^5.0.1", + "postcss-normalize-timing-functions": "^5.0.1", + "postcss-normalize-unicode": "^5.0.1", + "postcss-normalize-url": "^5.0.2", + "postcss-normalize-whitespace": "^5.0.1", + "postcss-ordered-values": "^5.0.2", + "postcss-reduce-initial": "^5.0.1", + "postcss-reduce-transforms": "^5.0.1", + "postcss-svgo": "^5.0.3", + "postcss-unique-selectors": "^5.0.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", + "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "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, + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/current-module-paths": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/current-module-paths/-/current-module-paths-1.1.0.tgz", + "integrity": "sha512-HGhLUszcgprjKmzvQoCQda8iEWsQn3sWVzPdttyJVR5cjfVDYcoyozQA5D1YXgab9v84SPMpSuD+YrPX6i1IMQ==", + "dev": true, + "engines": { + "node": ">=12.17" + } + }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "dev": true + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, + "node_modules/deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "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.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "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/diff-sequences": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", + "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "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.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "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/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", + "dev": true + }, + "node_modules/domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/domhandler": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", + "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", + "dev": true, + "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, + "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/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.3.895", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.895.tgz", + "integrity": "sha512-9Ww3fB8CWctjqHwkOt7DQbMZMpal2x2reod+/lU4b9axO1XJEDUpPMBxs7YnjLhhqpKXIIB5SRYN/B4K0QpvyQ==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "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/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/entities": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", + "dev": true + }, + "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/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/escodegen/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.2.0.tgz", + "integrity": "sha512-erw7XmM+CLxTOickrimJ1SiF55jiNlVSp2qqm0NuBWPtHYQCegD5ZMaW0c3i5ytPqL+SSLaCxdvQXFPLJn+ABw==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.0.4", + "@humanwhocodes/config-array": "^0.6.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^6.0.0", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.0.0", + "espree": "^9.0.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.2.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "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-scope": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-6.0.0.tgz", + "integrity": "sha512-uRDL9MWmQCkaFus8RF5K9/L/2fn+80yoW3jkD53l4shjCh26fCtvJGasxjUqP5OT87SYTxCVA3BwTUzuELx9kA==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", + "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "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/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.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", + "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", + "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/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "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.0.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.0.0.tgz", + "integrity": "sha512-r5EQJcYZ2oaGbeR0jR0fFVijGOcwai07/690YRXLINuhmVeRY4UKSAsQPe/0BNuDgwP7Ophoc1PRsr2E3tkbdQ==", + "dev": true, + "dependencies": { + "acorn": "^8.5.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "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": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "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/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "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/exif-parser": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", + "integrity": "sha1-WKnS1ywCwfbwKg70qRZicrd2CSI=", + "dev": true + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz", + "integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==", + "dev": true, + "dependencies": { + "@jest/types": "^27.2.5", + "ansi-styles": "^5.0.0", + "jest-get-type": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-regex-util": "^27.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/expect/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/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-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": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "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/file-type": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", + "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "dev": true, + "dependencies": { + "array-back": "^3.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/find-replace/node_modules/array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", + "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", + "dev": true + }, + "node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "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.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/generic-names": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-2.0.1.tgz", + "integrity": "sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ==", + "dev": true, + "dependencies": { + "loader-utils": "^1.1.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-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "dev": true + }, + "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/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "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/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dev": true, + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "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/graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/handlebars/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/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "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/http-assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", + "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", + "dev": true, + "dependencies": { + "deep-equal": "~1.0.1", + "http-errors": "~1.8.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-errors": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.0.tgz", + "integrity": "sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "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/husky": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz", + "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==", + "dev": true, + "bin": { + "husky": "lib/bin.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.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": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "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, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "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/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "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, + "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, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", + "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflation": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz", + "integrity": "sha1-i0F+R8KPklpFEz2RTKH9OJEH8w8=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "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-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "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-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", + "dev": true + }, + "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-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-invalid-path": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-1.0.2.tgz", + "integrity": "sha512-6KLcFrPCEP3AFXMfnWrIFkZpYNBVzZAoBJJDEZKtI3LXkaDjM3uFMJQjxiizUuZTZ9Oh9FNv/soXbx5TcpaDmA==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "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, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "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/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "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-lib-source-maps/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/istanbul-reports": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.5.tgz", + "integrity": "sha512-5+19PlhnGabNWB7kOFnuxT8H3T/iIyQzIbQMxXsURmmvKg86P2sbkrGOT77VnHw0Qr0gc2XzRaRfMZYYbSQCJQ==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jaguarjs-jsdoc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jaguarjs-jsdoc/-/jaguarjs-jsdoc-1.1.0.tgz", + "integrity": "sha1-Pjz/ljvRLU5D1STZxgZxTiv6KQE=", + "dev": true, + "dependencies": { + "taffydb": "^2.7.2", + "underscore": "^1.7.0" + } + }, + "node_modules/jest": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.3.1.tgz", + "integrity": "sha512-U2AX0AgQGd5EzMsiZpYt8HyZ+nSVIh5ujQ9CPp9EQZJMjXIiSZpJNweZl0swatKRoqHWgGKM3zaSwm4Zaz87ng==", + "dev": true, + "dependencies": { + "@jest/core": "^27.3.1", + "import-local": "^3.0.2", + "jest-cli": "^27.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-canvas-mock": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/jest-canvas-mock/-/jest-canvas-mock-2.3.1.tgz", + "integrity": "sha512-5FnSZPrX3Q2ZfsbYNE3wqKR3+XorN8qFzDzB5o0golWgt6EOX1+emBnpOc9IAQ+NXFj8Nzm3h7ZdE/9H0ylBcg==", + "dev": true, + "dependencies": { + "cssfontparser": "^1.2.1", + "moo-color": "^1.0.2" + } + }, + "node_modules/jest-changed-files": { + "version": "27.3.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.3.0.tgz", + "integrity": "sha512-9DJs9garMHv4RhylUMZgbdCJ3+jHSkpL9aaVKp13xtXAD80qLTLrqcDZL1PHA9dYA0bCI86Nv2BhkLpLhrBcPg==", + "dev": true, + "dependencies": { + "@jest/types": "^27.2.5", + "execa": "^5.0.0", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.3.1.tgz", + "integrity": "sha512-v1dsM9II6gvXokgqq6Yh2jHCpfg7ZqV4jWY66u7npz24JnhP3NHxI0sKT7+ZMQ7IrOWHYAaeEllOySbDbWsiXw==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.3.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "pretty-format": "^27.3.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.3.1.tgz", + "integrity": "sha512-WHnCqpfK+6EvT62me6WVs8NhtbjAS4/6vZJnk7/2+oOr50cwAzG4Wxt6RXX0hu6m1169ZGMlhYYUNeKBXCph/Q==", + "dev": true, + "dependencies": { + "@jest/core": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/types": "^27.2.5", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "jest-config": "^27.3.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.3.1.tgz", + "integrity": "sha512-KY8xOIbIACZ/vdYCKSopL44I0xboxC751IX+DXL2+Wx6DKNycyEfV3rryC3BPm5Uq/BBqDoMrKuqLEUNJmMKKg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^27.3.1", + "@jest/types": "^27.2.5", + "babel-jest": "^27.3.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-circus": "^27.3.1", + "jest-environment-jsdom": "^27.3.1", + "jest-environment-node": "^27.3.1", + "jest-get-type": "^27.3.1", + "jest-jasmine2": "^27.3.1", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.3.1", + "jest-runner": "^27.3.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", + "micromatch": "^4.0.4", + "pretty-format": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "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": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz", + "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.0.6", + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.0.6.tgz", + "integrity": "sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.3.1.tgz", + "integrity": "sha512-E4SwfzKJWYcvOYCjOxhZcxwL+AY0uFMvdCOwvzgutJiaiodFjkxQQDxHm8FQBeTqDnSmKsQWn7ldMRzTn2zJaQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.2.5", + "chalk": "^4.0.0", + "jest-get-type": "^27.3.1", + "jest-util": "^27.3.1", + "pretty-format": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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-jsdom": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.3.1.tgz", + "integrity": "sha512-3MOy8qMzIkQlfb3W1TfrD7uZHj+xx8Olix5vMENkj5djPmRqndMaXtpnaZkxmxM+Qc3lo+yVzJjzuXbCcZjAlg==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.3.1", + "@jest/fake-timers": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1", + "jsdom": "^16.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.3.1.tgz", + "integrity": "sha512-T89F/FgkE8waqrTSA7/ydMkcc52uYPgZZ6q8OaZgyiZkJb5QNNCF6oPZjH9IfPFfcc9uBWh1574N0kY0pSvTXw==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.3.1", + "@jest/fake-timers": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", + "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", + "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", + "dev": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^27.0.6", + "jest-serializer": "^27.0.6", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-jasmine2": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.3.1.tgz", + "integrity": "sha512-WK11ZUetDQaC09w4/j7o4FZDUIp+4iYWH/Lik34Pv7ukL+DuXFGdnmmi7dT58J2ZYKFB5r13GyE0z3NPeyJmsg==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^27.3.1", + "@jest/source-map": "^27.0.6", + "@jest/test-result": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.3.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "pretty-format": "^27.3.1", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/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-jasmine2/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-jasmine2/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-jasmine2/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-jasmine2/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-jasmine2/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-leak-detector": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.3.1.tgz", + "integrity": "sha512-78QstU9tXbaHzwlRlKmTpjP9k4Pvre5l0r8Spo4SbFFVy/4Abg9I6ZjHwjg2QyKEAMg020XcjP+UgLZIY50yEg==", + "dev": true, + "dependencies": { + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz", + "integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.3.1", + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.3.1.tgz", + "integrity": "sha512-bh3JEmxsTZ/9rTm0jQrPElbY2+y48Rw2t47uMfByNyUVR+OfPh4anuyKsGqsNkXk/TI4JbLRZx+7p7Hdt6q1yg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.2.5", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.4", + "pretty-format": "^27.3.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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": "27.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", + "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.3.1.tgz", + "integrity": "sha512-Dfzt25CFSPo3Y3GCbxynRBZzxq9AdyNN+x/v2IqYx6KVT5Z6me2Z/PsSGFSv3cOSUZqJ9pHxilao/I/m9FouLw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.2.5", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.3.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.3.1.tgz", + "integrity": "sha512-X7iLzY8pCiYOnvYo2YrK3P9oSE8/3N2f4pUZMJ8IUcZnT81vlSonya1KTO9ZfKGuC+svE6FHK/XOb8SsoRUV1A==", + "dev": true, + "dependencies": { + "@jest/types": "^27.2.5", + "jest-regex-util": "^27.0.6", + "jest-snapshot": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.3.1.tgz", + "integrity": "sha512-r4W6kBn6sPr3TBwQNmqE94mPlYVn7fLBseeJfo4E2uCTmAyDFm2O5DYAQAFP7Q3YfiA/bMwg8TVsciP7k0xOww==", + "dev": true, + "dependencies": { + "@jest/console": "^27.3.1", + "@jest/environment": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/transform": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-docblock": "^27.0.6", + "jest-environment-jsdom": "^27.3.1", + "jest-environment-node": "^27.3.1", + "jest-haste-map": "^27.3.1", + "jest-leak-detector": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-resolve": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.3.1.tgz", + "integrity": "sha512-qtO6VxPbS8umqhEDpjA4pqTkKQ1Hy4ZSi9mDVeE9Za7LKBo2LdW2jmT+Iod3XFaJqINikZQsn2wEi0j9wPRbLg==", + "dev": true, + "dependencies": { + "@jest/console": "^27.3.1", + "@jest/environment": "^27.3.1", + "@jest/globals": "^27.3.1", + "@jest/source-map": "^27.0.6", + "@jest/test-result": "^27.3.1", + "@jest/transform": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-mock": "^27.3.0", + "jest-regex-util": "^27.0.6", + "jest-resolve": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^16.2.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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-serializer": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", + "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "dev": true, + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.3.1.tgz", + "integrity": "sha512-APZyBvSgQgOT0XumwfFu7X3G5elj6TGhCBLbBdn3R1IzYustPGPE38F51dBWMQ8hRXa9je0vAdeVDtqHLvB6lg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/parser": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.3.1", + "graceful-fs": "^4.2.4", + "jest-diff": "^27.3.1", + "jest-get-type": "^27.3.1", + "jest-haste-map": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-resolve": "^27.3.1", + "jest-util": "^27.3.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.3.1", + "semver": "^7.3.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.2.5", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.4", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.3.1.tgz", + "integrity": "sha512-3H0XCHDFLA9uDII67Bwi1Vy7AqwA5HqEEjyy934lgVhtJ3eisw6ShOF1MDmRPspyikef5MyExvIm0/TuLzZ86Q==", + "dev": true, + "dependencies": { + "@jest/types": "^27.2.5", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.3.1", + "leven": "^3.1.0", + "pretty-format": "^27.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "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": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.3.1.tgz", + "integrity": "sha512-9/xbV6chABsGHWh9yPaAGYVVKurWoP3ZMCv6h+O1v9/+pkOroigs6WzZ0e9gLP/njokUwM7yQhr01LKJVMkaZA==", + "dev": true, + "dependencies": { + "@jest/test-result": "^27.3.1", + "@jest/types": "^27.2.5", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.3.1", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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-webgl-canvas-mock": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/jest-webgl-canvas-mock/-/jest-webgl-canvas-mock-0.2.3.tgz", + "integrity": "sha512-82QePnztfps/CZMJP60gKeWEaMPz/ZOpcX+ayhkg9uKJ4+YyHmrWu0FTD+Z1FVcKeP5dqAY2Rv5ZG3msIKpSEA==", + "dev": true, + "dependencies": { + "cssfontparser": "^1.2.1", + "parse-color": "^1.0.0" + } + }, + "node_modules/jest-worker": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", + "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.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/jimp": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.6.8.tgz", + "integrity": "sha512-F7emeG7Hp61IM8VFbNvWENLTuHe0ghizWPuP4JS9ujx2r5mCVYEd/zdaz6M2M42ZdN41blxPajLWl9FXo7Mr2Q==", + "dev": true, + "dependencies": { + "@jimp/custom": "^0.6.8", + "@jimp/plugins": "^0.6.8", + "@jimp/types": "^0.6.8", + "core-js": "^2.5.7", + "regenerator-runtime": "^0.13.3" + } + }, + "node_modules/jpeg-js": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.7.tgz", + "integrity": "sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ==", + "dev": true + }, + "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/js2xmlparser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", + "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", + "dev": true, + "dependencies": { + "xmlcreate": "^2.0.4" + } + }, + "node_modules/jsdoc": { + "version": "3.6.7", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.7.tgz", + "integrity": "sha512-sxKt7h0vzCd+3Y81Ey2qinupL6DpRSZJclS04ugHDNmRUXGzqicMJ6iwayhSA0S0DwwX30c5ozyUthr1QKF6uw==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.9.4", + "bluebird": "^3.7.2", + "catharsis": "^0.9.0", + "escape-string-regexp": "^2.0.0", + "js2xmlparser": "^4.0.1", + "klaw": "^3.0.0", + "markdown-it": "^10.0.0", + "markdown-it-anchor": "^5.2.7", + "marked": "^2.0.3", + "mkdirp": "^1.0.4", + "requizzle": "^0.2.3", + "strip-json-comments": "^3.1.0", + "taffydb": "2.6.2", + "underscore": "~1.13.1" + }, + "bin": { + "jsdoc": "jsdoc.js" + }, + "engines": { + "node": ">=8.15.0" + } + }, + "node_modules/jsdoc/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/jsdoc/node_modules/taffydb": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", + "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", + "dev": true + }, + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "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-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": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/keygrip": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + "dev": true, + "dependencies": { + "tsscmp": "1.0.6" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/klaw": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", + "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.9" + } + }, + "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/koa": { + "version": "2.13.4", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.4.tgz", + "integrity": "sha512-43zkIKubNbnrULWlHdN5h1g3SEKXOEzoAlRsHOTFpnlDu8JlAOZSMJBLULusuXRequboiwJcj5vtYXKB3k7+2g==", + "dev": true, + "dependencies": { + "accepts": "^1.3.5", + "cache-content-type": "^1.0.0", + "content-disposition": "~0.5.2", + "content-type": "^1.0.4", + "cookies": "~0.8.0", + "debug": "^4.3.2", + "delegates": "^1.0.0", + "depd": "^2.0.0", + "destroy": "^1.0.4", + "encodeurl": "^1.0.2", + "escape-html": "^1.0.3", + "fresh": "~0.5.2", + "http-assert": "^1.3.0", + "http-errors": "^1.6.3", + "is-generator-function": "^1.0.7", + "koa-compose": "^4.1.0", + "koa-convert": "^2.0.0", + "on-finished": "^2.3.0", + "only": "~0.0.2", + "parseurl": "^1.3.2", + "statuses": "^1.5.0", + "type-is": "^1.6.16", + "vary": "^1.1.2" + }, + "engines": { + "node": "^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4" + } + }, + "node_modules/koa-bodyparser": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/koa-bodyparser/-/koa-bodyparser-4.3.0.tgz", + "integrity": "sha512-uyV8G29KAGwZc4q/0WUAjH+Tsmuv9ImfBUF2oZVyZtaeo0husInagyn/JH85xMSxM0hEk/mbCII5ubLDuqW/Rw==", + "dev": true, + "dependencies": { + "co-body": "^6.0.0", + "copy-to": "^2.0.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/koa-compose": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", + "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", + "dev": true + }, + "node_modules/koa-compress": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/koa-compress/-/koa-compress-5.1.0.tgz", + "integrity": "sha512-G3Ppo9jrUwlchp6qdoRgQNMiGZtM0TAHkxRZQ7EoVvIG8E47J4nAsMJxXHAUQ+0oc7t0MDxSdONWTFcbzX7/Bg==", + "dev": true, + "dependencies": { + "bytes": "^3.0.0", + "compressible": "^2.0.0", + "http-errors": "^1.8.0", + "koa-is-json": "^1.0.0", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/koa-compress/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/koa-conditional-get": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/koa-conditional-get/-/koa-conditional-get-2.0.0.tgz", + "integrity": "sha1-pD83I8HQFLcwo07Oit8wuTyCM/I=", + "dev": true + }, + "node_modules/koa-convert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz", + "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", + "dev": true, + "dependencies": { + "co": "^4.6.0", + "koa-compose": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/koa-etag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/koa-etag/-/koa-etag-3.0.0.tgz", + "integrity": "sha1-nvc4Ld1agqsN6xU0FckVg293HT8=", + "dev": true, + "dependencies": { + "etag": "^1.3.0", + "mz": "^2.1.0" + } + }, + "node_modules/koa-is-json": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/koa-is-json/-/koa-is-json-1.0.0.tgz", + "integrity": "sha1-JzwH7c3Ljfaiwat9We52SRRR7BQ=", + "dev": true + }, + "node_modules/koa-json": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/koa-json/-/koa-json-2.0.2.tgz", + "integrity": "sha1-Nq8U5uofXWRtfESihXAcb4Wk/eQ=", + "dev": true, + "dependencies": { + "koa-is-json": "1", + "streaming-json-stringify": "3" + } + }, + "node_modules/koa-morgan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/koa-morgan/-/koa-morgan-1.0.1.tgz", + "integrity": "sha1-CAUuDODYOdPEMXi5CluzQkvvH5k=", + "dev": true, + "dependencies": { + "morgan": "^1.6.1" + } + }, + "node_modules/koa-range": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/koa-range/-/koa-range-0.3.0.tgz", + "integrity": "sha1-NYjjSWRzqDmhvSZNKkKx2FvX/qw=", + "dev": true, + "dependencies": { + "stream-slice": "^0.1.2" + }, + "engines": { + "node": ">=7" + } + }, + "node_modules/koa-route": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/koa-route/-/koa-route-3.2.0.tgz", + "integrity": "sha1-dimLmaa8+p44yrb+XHmocz51i84=", + "dev": true, + "dependencies": { + "debug": "*", + "methods": "~1.1.0", + "path-to-regexp": "^1.2.0" + } + }, + "node_modules/koa-route/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "node_modules/koa-route/node_modules/path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dev": true, + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/koa-send": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/koa-send/-/koa-send-5.0.1.tgz", + "integrity": "sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "http-errors": "^1.7.3", + "resolve-path": "^1.4.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/koa-static": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/koa-static/-/koa-static-5.0.0.tgz", + "integrity": "sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==", + "dev": true, + "dependencies": { + "debug": "^3.1.0", + "koa-send": "^5.0.0" + }, + "engines": { + "node": ">= 7.6.0" + } + }, + "node_modules/koa-static/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/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": "2.0.4", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", + "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "node_modules/linkify-it": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", + "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", + "dev": true, + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/lint-staged": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-11.2.6.tgz", + "integrity": "sha512-Vti55pUnpvPE0J9936lKl0ngVeTdSZpEdTNhASbkaWX7J5R9OEifo1INBGQuGW4zmy6OG+TcWPJ3m5yuy5Q8Tg==", + "dev": true, + "dependencies": { + "cli-truncate": "2.1.0", + "colorette": "^1.4.0", + "commander": "^8.2.0", + "cosmiconfig": "^7.0.1", + "debug": "^4.3.2", + "enquirer": "^2.3.6", + "execa": "^5.1.1", + "listr2": "^3.12.2", + "micromatch": "^4.0.4", + "normalize-path": "^3.0.0", + "please-upgrade-node": "^3.2.0", + "string-argv": "0.3.1", + "stringify-object": "3.3.0", + "supports-color": "8.1.1" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/lint-staged/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/lint-staged/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/listr2": { + "version": "3.13.3", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.13.3.tgz", + "integrity": "sha512-VqAgN+XVfyaEjSaFewGPcDs5/3hBbWVaX1VgWv2f52MF7US45JuARlArULctiB44IIcEk3JF7GtoFCLqEdeuPA==", + "dev": true, + "dependencies": { + "cli-truncate": "^2.1.0", + "clone": "^2.1.2", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rxjs": "^7.4.0", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + } + }, + "node_modules/listr2/node_modules/colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, + "node_modules/load-bmfont": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", + "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", + "dev": true, + "dependencies": { + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "phin": "^2.9.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" + } + }, + "node_modules/load-module": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/load-module/-/load-module-4.2.1.tgz", + "integrity": "sha512-Sbfg6R4LjvyThJpqUoADHMjyoI2+cL4msbCQeZ9kkY/CqP/TT2938eftKm7x4I2gd4/A+DEe6nePkbfWYbXwSw==", + "dev": true, + "dependencies": { + "array-back": "^6.2.0" + }, + "engines": { + "node": ">=12.17" + } + }, + "node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/loader-utils/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/local-web-server": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/local-web-server/-/local-web-server-5.1.1.tgz", + "integrity": "sha512-jVl0U/PjV/Xprs2aoMfg5kvndSimR2LnGf/ixQLYFIlC8RtLgTANKB6Sc2xAKjWoAek6yP5CDh6IuykGbM4uPw==", + "dev": true, + "dependencies": { + "current-module-paths": "^1.1.0", + "lws": "^4.1.0", + "lws-basic-auth": "^2.0.0", + "lws-blacklist": "^3.0.0", + "lws-body-parser": "^2.0.0", + "lws-compress": "^3.1.0", + "lws-conditional-get": "^2.0.0", + "lws-cors": "^3.0.0", + "lws-index": "^3.1.0", + "lws-json": "^2.0.0", + "lws-log": "^2.0.0", + "lws-mime": "^2.0.0", + "lws-range": "^3.0.0", + "lws-request-monitor": "^2.0.0", + "lws-rewrite": "^3.1.1", + "lws-spa": "^4.1.0", + "lws-static": "^3.1.0" + }, + "bin": { + "ws": "bin/cli.mjs" + }, + "engines": { + "node": ">=12.20" + } + }, + "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/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.assignwith": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignwith/-/lodash.assignwith-4.2.0.tgz", + "integrity": "sha1-EnqX8CrcQXUalU0ksN4X4QDgOOs=", + "dev": true + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "dev": true + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "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.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=", + "dev": true + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/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/log-update/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/log-update/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/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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/lws": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lws/-/lws-4.1.1.tgz", + "integrity": "sha512-x4PbfhQaoPkCncSNa39ZblHVUJa/BHzRXhdiNSRI7C6XHW0++tr5ELBDQLVtYH0b+e+eXHxnPq6DrkzUoqQn4g==", + "dev": true, + "dependencies": { + "@75lb/deep-merge": "^1.1.1", + "ansi-escape-sequences": "^6.2.0", + "array-back": "^6.2.0", + "byte-size": "^8.1.0", + "command-line-args": "^5.2.0", + "command-line-usage": "^6.1.1", + "create-mixin": "^3.0.0", + "current-module-paths": "^1.1.0", + "koa": "^2.13.3", + "load-module": "^4.2.1", + "open": "^8.3.0", + "qrcode-terminal": "^0.12.0", + "typical": "^7.1.1", + "walk-back": "^5.1.0" + }, + "bin": { + "lws": "bin/cli.mjs" + }, + "engines": { + "node": ">=12.20" + } + }, + "node_modules/lws-basic-auth": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lws-basic-auth/-/lws-basic-auth-2.0.0.tgz", + "integrity": "sha512-zzyoGFLQPuKaQJvHMLmmSyfT6lIvocwcDXllTVW5brD0t0YgHYopILkzja+x+MIlJX/YhNKniaTSasujniYVjw==", + "dev": true, + "dependencies": { + "basic-auth": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lws-blacklist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lws-blacklist/-/lws-blacklist-3.0.0.tgz", + "integrity": "sha512-KNXGDBmbj+UGfWMBAefe2vrfuWpEQms/9Fd7kfMScTqAKF6nrVoEs4pkxfefArG3bX0bu7jWLyB4tJGma5WC6Q==", + "dev": true, + "dependencies": { + "array-back": "^4.0.1", + "path-to-regexp": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lws-blacklist/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/lws-body-parser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lws-body-parser/-/lws-body-parser-2.0.0.tgz", + "integrity": "sha512-QFDzln3sSdKWL9fVNWy2+ZmrKy/XaYRO0/FFB0MBrDCsNnzepeCD4I7rOOfyuphLn42yR8XUpWdcJ3Ii5aauRA==", + "dev": true, + "dependencies": { + "koa-bodyparser": "^4.2.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lws-compress": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lws-compress/-/lws-compress-3.1.0.tgz", + "integrity": "sha512-uBlpYFNBUD3FuQjXbtwasvD90w3HH6GRivknvbibSSsDQf1MtIM8WZ5fS4795n1ozTYnQD+Ai8T+Cpy0q0xuhA==", + "dev": true, + "dependencies": { + "koa-compress": "^5.0.1" + }, + "engines": { + "node": ">=12.17" + } + }, + "node_modules/lws-conditional-get": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lws-conditional-get/-/lws-conditional-get-2.0.0.tgz", + "integrity": "sha512-U05yDlFJKIYa7gJZYfnc1HIEuXbKpDJztgkvNYyxCqJC28j/k9ORoNnFNOIHpBh/jlPJgV8x7uH34mIxFAryWA==", + "dev": true, + "dependencies": { + "koa-conditional-get": "^2.0.0", + "koa-etag": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lws-cors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lws-cors/-/lws-cors-3.0.0.tgz", + "integrity": "sha512-diUkoyVZyzLB8LamdtUYYAfJdPAyu/+IjE3ZUcdnNQz9koECe4O2x3SWD7LSV43pd3CKgyiwwSxWJ4hTBZFIvQ==", + "dev": true, + "dependencies": { + "@koa/cors": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lws-index": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lws-index/-/lws-index-3.1.0.tgz", + "integrity": "sha512-P0sV2amE8e6ZU+UmtMuwjoChCJNKR6DoANngBMPpfJmVAA3y6CJN5pVjG2gzris1p63rTiUlFNs2pl4oK/nkIQ==", + "dev": true, + "dependencies": { + "serve-index-75lb": "^2.0.1" + }, + "engines": { + "node": ">=12.17" + } + }, + "node_modules/lws-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lws-json/-/lws-json-2.0.0.tgz", + "integrity": "sha512-vqUFrAQ5BGpkMS2Mm/ZhgvUMi6Tgia7YtESG7pKjNoiSsD+TxncG0nqp8YjUh2xrEzi/SYFc/ed+9ZOl/t0A0g==", + "dev": true, + "dependencies": { + "koa-json": "^2.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lws-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lws-log/-/lws-log-2.0.0.tgz", + "integrity": "sha512-YveoazSZ0Qb1Tljdm8G8yn9c+mAMXgvLMACZzh5aZIk7p8YJwiXf9r1S+xY7wbXEcKG629KfVO0B5G5gRFcyDQ==", + "dev": true, + "dependencies": { + "koa-morgan": "^1.0.1", + "stream-log-stats": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lws-mime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lws-mime/-/lws-mime-2.0.0.tgz", + "integrity": "sha512-mfrAgRQ5+hkQ7LJ6EAgwnUeymNeYxwLXZY3UQ6C2hSTr7BqMSzm9k5O0C8wWP2dzdhChzITYKwzWbUnAYVBwtA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lws-range": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lws-range/-/lws-range-3.0.0.tgz", + "integrity": "sha512-7ZhA/LqQnKjolKBo/2BFj9DyDDXcJGY3v05TwYRD0qDGrxW4vuatEjluC3SV7ZO/k4PxDLdxuk+RCgL5t3ThtQ==", + "dev": true, + "dependencies": { + "koa-range": "^0.3.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lws-request-monitor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lws-request-monitor/-/lws-request-monitor-2.0.0.tgz", + "integrity": "sha512-ZTo0/pS42qiejcYlL+wlpurSbDSS0J7pDDohqBx7jjUQkgni2Qd8cPzn/kW8QI82gXgDmdZH+ps0vheLHlgdgg==", + "dev": true, + "dependencies": { + "byte-size": "^6.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lws-request-monitor/node_modules/byte-size": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-6.2.0.tgz", + "integrity": "sha512-6EspYUCAPMc7E2rltBgKwhG+Cmk0pDm9zDtF1Awe2dczNUL3YpZ8mTs/dueOTS1hqGWBOatqef4jYMGjln7WmA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/lws-rewrite": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lws-rewrite/-/lws-rewrite-3.1.1.tgz", + "integrity": "sha512-cOeaPXIlLUVLxS6BZ52QzZVzI8JjCzlWD4RWizB5Hd+0YGO0SPa3Vgk7CIghtAOsSdjtXg/wSOap2H1h+tw8BQ==", + "dev": true, + "dependencies": { + "array-back": "^4.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "koa-route": "^3.2.0", + "path-to-regexp": "^6.1.0" + }, + "bin": { + "lws-rewrite": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lws-rewrite/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/lws-spa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lws-spa/-/lws-spa-4.1.0.tgz", + "integrity": "sha512-B1YhxAY02EYu7J9dKBQMpYRwOd4iOtKK3TDdUR2GnJ4nsnvoxsJnMUpg8yxGmWZ6NI8itdUdQJlwqKg/Gji/vQ==", + "dev": true, + "dependencies": { + "koa-send": "^5.0.1" + }, + "engines": { + "node": ">=12.17" + } + }, + "node_modules/lws-static": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lws-static/-/lws-static-3.1.0.tgz", + "integrity": "sha512-0fWZRluPda0raMEzTd2mY/REWsa5LxDz03j+Zer8yhFfbicJGaocTK1jOlRo/H5UEDImBdfSDZGlrmzMaF9Xcg==", + "dev": true, + "dependencies": { + "koa-static": "^5.0.0" + }, + "engines": { + "node": ">=12.17" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/map-limit": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/map-limit/-/map-limit-0.0.1.tgz", + "integrity": "sha1-63lhAxwPDo0AG/LVb6toXViCLzg=", + "dev": true, + "dependencies": { + "once": "~1.3.0" + } + }, + "node_modules/map-limit/node_modules/once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/markdown-it": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz", + "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "entities": "~2.0.0", + "linkify-it": "^2.0.0", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/markdown-it-anchor": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz", + "integrity": "sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==", + "dev": true, + "peerDependencies": { + "markdown-it": "*" + } + }, + "node_modules/markdown-it/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/marked": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/marked/-/marked-2.1.3.tgz", + "integrity": "sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA==", + "dev": true, + "bin": { + "marked": "bin/marked" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/maxrects-packer": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/maxrects-packer/-/maxrects-packer-2.7.2.tgz", + "integrity": "sha512-akd5IRLPqQeWlpJyRJyfYq86VB05zzbMIdyTgLxRk4z1H0A8g4oTJW31Yo6zO9piSRsFNYdzmgudW7J2g1gEhQ==", + "dev": true + }, + "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 + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "dev": true + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "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/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dev": true, + "dependencies": { + "mime-db": "1.51.0" + }, + "engines": { + "node": ">= 0.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/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "dev": true, + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/moo-color": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/moo-color/-/moo-color-1.0.2.tgz", + "integrity": "sha512-5iXz5n9LWQzx/C2WesGFfpE6RLamzdHwsn3KpfzShwbfIqs7stnoEpaNErf/7+3mbxwZ4s8Foq7I0tPxw7BWHg==", + "dev": true, + "dependencies": { + "color-name": "^1.1.4" + } + }, + "node_modules/moo-color/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/morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "dev": true, + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/morgan/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/morgan/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "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/msdf-bmfont-xml": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/msdf-bmfont-xml/-/msdf-bmfont-xml-2.5.4.tgz", + "integrity": "sha512-wzatQAcOrEk5gxdijTXHJ8+Lrmq5I12lRplls697aZRkdqjaX/fscaJQZit+hsIJt1/QU79GdQpPF8N/WMBkLQ==", + "dev": true, + "dependencies": { + "arabic-persian-reshaper": "^1.0.1", + "cli-progress": "^2.1.1", + "commander": "^2.19.0", + "handlebars": "^4.7.2", + "is-invalid-path": "^1.0.2", + "jimp": "^0.6.0", + "js2xmlparser": "^4.0.0", + "map-limit": "0.0.1", + "maxrects-packer": "^2.4.0-alpha.0", + "opentype.js": "^0.11.0" + }, + "bin": { + "msdf-bmfont": "cli.js" + } + }, + "node_modules/msdf-bmfont-xml/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "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.1.30", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", + "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", + "dev": true, + "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": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node_modules/node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true + }, + "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-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, + "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.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/omggif": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", + "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "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/only": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", + "integrity": "sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q=", + "dev": true + }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opentype.js": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/opentype.js/-/opentype.js-0.11.0.tgz", + "integrity": "sha512-Z9NkAyQi/iEKQYzCSa7/VJSqVIs33wknw8Z8po+DzuRUAqivJ+hJZ94mveg3xIeKwLreJdWTMyEO7x1K13l41Q==", + "dev": true, + "dependencies": { + "string.prototype.codepointat": "^0.2.1", + "tiny-inflate": "^1.0.2" + }, + "bin": { + "ot": "bin/ot" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "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": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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/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/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "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, + "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, + "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/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "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-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU=", + "dev": true + }, + "node_modules/parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY=", + "dev": true + }, + "node_modules/parse-bmfont-xml": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", + "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", + "dev": true, + "dependencies": { + "xml-parse-from-string": "^1.0.0", + "xml2js": "^0.4.5" + } + }, + "node_modules/parse-color": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-color/-/parse-color-1.0.0.tgz", + "integrity": "sha1-e3SLlag/A/FqlPU15S1/PZRlhhk=", + "dev": true, + "dependencies": { + "color-convert": "~0.5.0" + } + }, + "node_modules/parse-color/node_modules/color-convert": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz", + "integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0=", + "dev": true + }, + "node_modules/parse-headers": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.4.tgz", + "integrity": "sha512-psZ9iZoCNFLrgRjZ1d8mn0h9WRqJwFxM9q3x7iUjN/YT2OksthDJ5TiPCu2F38kS4zutqfW+YdVVkBZZx3/1aw==", + "dev": true + }, + "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/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "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": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "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-to-regexp": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.0.tgz", + "integrity": "sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg==", + "dev": true + }, + "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/phin": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "dependencies": { + "node-modules-regexp": "^1.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pixelmatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ=", + "dev": true, + "dependencies": { + "pngjs": "^3.0.0" + }, + "bin": { + "pixelmatch": "bin/pixelmatch" + } + }, + "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/please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, + "dependencies": { + "semver-compare": "^1.0.0" + } + }, + "node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss": { + "version": "8.3.11", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.11.tgz", + "integrity": "sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA==", + "dev": true, + "dependencies": { + "nanoid": "^3.1.30", + "picocolors": "^1.0.0", + "source-map-js": "^0.6.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-calc": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz", + "integrity": "sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-colormin": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.1.tgz", + "integrity": "sha512-VVwMrEYLcHYePUYV99Ymuoi7WhKrMGy/V9/kTS0DkCoJYmmjdOMneyhzYUxcNgteKDVbrewOkSM7Wje/MFwxzA==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.2.tgz", + "integrity": "sha512-KQ04E2yadmfa1LqXm7UIDwW1ftxU/QWZmz6NKnHnUvJ3LEYbbcX6i329f/ig+WnEByHegulocXrECaZGLpL8Zg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-comments": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", + "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", + "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", + "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", + "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-load-config": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.0.tgz", + "integrity": "sha512-ipM8Ds01ZUophjDTQYSVP70slFSYg3T0/zyfII5vzhN6V57YSxMgG5syXuwi5VtS8wSf3iL30v0uBdoIVx4Q0g==", + "dev": true, + "dependencies": { + "import-cwd": "^3.0.0", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-merge-longhand": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.3.tgz", + "integrity": "sha512-kmB+1TjMTj/bPw6MCDUiqSA5e/x4fvLffiAdthra3a0m2/IjTrWsTmD3FdSskzUjEwkj5ZHBDEbv5dOcqD7CMQ==", + "dev": true, + "dependencies": { + "css-color-names": "^1.0.1", + "postcss-value-parser": "^4.1.0", + "stylehacks": "^5.0.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz", + "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^2.0.1", + "postcss-selector-parser": "^6.0.5", + "vendors": "^1.0.3" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz", + "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.3.tgz", + "integrity": "sha512-Z91Ol22nB6XJW+5oe31+YxRsYooxOdFKcbOqY/V8Fxse1Y3vqlNRpi1cxCqoACZTQEhl+xvt4hsbWiV5R+XI9Q==", + "dev": true, + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz", + "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.2", + "browserslist": "^4.16.0", + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0", + "uniqs": "^2.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz", + "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.2.2.tgz", + "integrity": "sha512-/H08MGEmaalv/OU8j6bUKi/kZr2kqGF6huAW8m9UAgOLWtpFdhA14+gPBoymtqyv+D4MLsmqaF2zvIegdCxJXg==", + "dev": true, + "dependencies": { + "generic-names": "^2.0.1", + "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.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "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, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", + "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz", + "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==", + "dev": true, + "dependencies": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz", + "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz", + "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==", + "dev": true, + "dependencies": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz", + "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz", + "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==", + "dev": true, + "dependencies": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz", + "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.0", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz", + "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==", + "dev": true, + "dependencies": { + "is-absolute-url": "^3.0.3", + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz", + "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-ordered-values": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz", + "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==", + "dev": true, + "dependencies": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz", + "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.0", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz", + "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==", + "dev": true, + "dependencies": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", + "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.3.tgz", + "integrity": "sha512-41XZUA1wNDAZrQ3XgWREL/M2zSw8LJPvb5ZWivljBsUQAGoEKMYm6okHsTjJxKYI4M75RQEH4KYlEM52VwdXVA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.1.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz", + "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5", + "uniqs": "^2.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "dev": true + }, + "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": "2.4.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", + "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/pretty-format": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", + "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", + "dev": true, + "dependencies": { + "@jest/types": "^27.2.5", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise.series": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/promise.series/-/promise.series-0.2.0.tgz", + "integrity": "sha1-LMfr6Vn8OmYZwEq029yeRS2GS70=", + "dev": true, + "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/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qrcode-terminal": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz", + "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==", + "dev": true, + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/qs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", + "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/raw-body": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", + "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", + "dev": true, + "dependencies": { + "bytes": "3.1.0", + "http-errors": "1.7.3", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body/node_modules/http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body/node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/regexpu-core": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requizzle": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz", + "integrity": "sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "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-path": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz", + "integrity": "sha1-xL2p9e+y/OZSR4c6s2u02DT+Fvc=", + "dev": true, + "dependencies": { + "http-errors": "~1.6.2", + "path-is-absolute": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/resolve-path/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/resolve-path/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/resolve-path/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/resolve-path/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "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.60.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.60.0.tgz", + "integrity": "sha512-cHdv9GWd58v58rdseC8e8XIaPUo8a9cgZpnCMMDGZFDZKEODOiPPEQFXLriWr/TjXzhPPmG5bkAztPsOARIcGQ==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-postcss": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-postcss/-/rollup-plugin-postcss-4.0.1.tgz", + "integrity": "sha512-kUJHlpDGl9+kDfdUUbnerW0Mx1R0PL/6dgciUE/w19swYDBjug7RQfxIRvRGtO/cvCkynYyU8e/YFMI544vskA==", + "dev": true, + "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, + "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, + "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, + "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 + }, + "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, + "engines": { + "node": ">=8" + } + }, + "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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0" + } + }, + "node_modules/rollup-plugin-terser/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/rollup-plugin-terser/node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/rollup-plugin-terser/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/rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "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 + }, + "node_modules/rxjs": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz", + "integrity": "sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w==", + "dev": true, + "dependencies": { + "tslib": "~2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "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 + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index-75lb": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/serve-index-75lb/-/serve-index-75lb-2.0.1.tgz", + "integrity": "sha512-/d9r8bqJlFQcwy0a0nb1KnWAA+Mno+V+VaoKocdkbW5aXKRQd/+4bfnRhQRQr6uEoYwTRJ4xgztOyCJvWcpBpQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.18", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index-75lb/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index-75lb/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index-75lb/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index-75lb/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/serve-index-75lb/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/serve-index-75lb/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "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/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", + "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==", + "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/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-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/slice-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/slice-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/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", + "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.20", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", + "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/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/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "node_modules/stack-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", + "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", + "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/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stream-log-stats": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/stream-log-stats/-/stream-log-stats-3.0.2.tgz", + "integrity": "sha512-393j7aeF9iRdHvyANqEQU82UQmpw2CTxgsT83caefh+lOxavVLbVrw8Mr4zjXeZLh2+xeHZMKfVx4T0rJ/EchA==", + "dev": true, + "dependencies": { + "ansi-escape-sequences": "^5.1.2", + "byte-size": "^6.2.0", + "common-log-format": "^1.0.0", + "JSONStream": "^1.3.5", + "lodash.throttle": "^4.1.1", + "stream-via": "^1.0.4", + "table-layout": "~1.0.0" + }, + "bin": { + "log-stats": "bin/cli.js" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/stream-log-stats/node_modules/ansi-escape-sequences": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-5.1.2.tgz", + "integrity": "sha512-JcpoVp1W1bl1Qn4cVuiXEhD6+dyXKSOgCn2zlzE8inYgCJCBy1aPnUhlz6I4DFum8D4ovb9Qi/iAjUcGvG2lqw==", + "dev": true, + "dependencies": { + "array-back": "^4.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/stream-log-stats/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/stream-log-stats/node_modules/byte-size": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-6.2.0.tgz", + "integrity": "sha512-6EspYUCAPMc7E2rltBgKwhG+Cmk0pDm9zDtF1Awe2dczNUL3YpZ8mTs/dueOTS1hqGWBOatqef4jYMGjln7WmA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/stream-slice": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/stream-slice/-/stream-slice-0.1.2.tgz", + "integrity": "sha1-LcT04bk2+xPz6zmi3vGTJ5jQeks=", + "dev": true + }, + "node_modules/stream-via": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/stream-via/-/stream-via-1.0.4.tgz", + "integrity": "sha512-DBp0lSvX5G9KGRDTkR/R+a29H+Wk2xItOF+MpZLLNDWbEV9tGPnqLPxHEYjmiz8xGtJHRIqmI+hCjmNzqoA4nQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/streaming-json-stringify": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/streaming-json-stringify/-/streaming-json-stringify-3.1.0.tgz", + "integrity": "sha1-gCAEN6mTzDnE/gAmO3s7kDrIevU=", + "dev": true, + "dependencies": { + "json-stringify-safe": "5", + "readable-stream": "2" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "dev": true, + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", + "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=", + "dev": true + }, + "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.prototype.codepointat": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", + "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==", + "dev": true + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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-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 + }, + "node_modules/stylehacks": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz", + "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.0", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "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-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/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/supports-hyperlinks/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/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, + "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, + "engines": { + "node": ">= 10" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "node_modules/table-layout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", + "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", + "dev": true, + "dependencies": { + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/table-layout/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/table-layout/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/taffydb": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.7.3.tgz", + "integrity": "sha1-KtNxaWKUmPylvIQkMJbTzeDsOjQ=", + "dev": true + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", + "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "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/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "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": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/throat": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", + "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/timm": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", + "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==", + "dev": true + }, + "node_modules/timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "dev": true + }, + "node_modules/tinycolor2": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", + "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "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": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "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, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true + }, + "node_modules/tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", + "dev": true, + "engines": { + "node": ">=0.6.x" + } + }, + "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/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", + "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/typical": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/typical/-/typical-7.1.1.tgz", + "integrity": "sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA==", + "dev": true, + "engines": { + "node": ">=12.17" + } + }, + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, + "node_modules/uglify-js": { + "version": "3.14.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.3.tgz", + "integrity": "sha512-mic3aOdiq01DuSVx0TseaEzMIVqebMZ0Z3vaeDhFEh9bsc24hV1TFvN74reA2vs08D0ZWfNjAcJ3UbVLaBss+g==", + "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/underscore": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", + "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==", + "dev": true + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "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/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "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/utif": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", + "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", + "dev": true, + "dependencies": { + "pako": "^1.0.5" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/v8-to-istanbul": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz", + "integrity": "sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/walk-back": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.1.0.tgz", + "integrity": "sha512-Uhxps5yZcVNbLEAnb+xaEEMdgTXl9qAQDzKYejG2AZ7qPwRQ81lozY9ECDbjLPNWm7YsO1IK5rsP1KoQzXAcGA==", + "dev": true, + "engines": { + "node": ">=12.17" + } + }, + "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": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, + "engines": { + "node": ">=10.4" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "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/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "node_modules/wordwrapjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "dev": true, + "dependencies": { + "reduce-flatten": "^2.0.0", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/wordwrapjs/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "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/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": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", + "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "dev": true, + "dependencies": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "node_modules/xml-parse-from-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", + "integrity": "sha1-qQKekp09vN7RafPG4oI42VpdWig=", + "dev": true + }, + "node_modules/xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dev": true, + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "node_modules/xmlcreate": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", + "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==", + "dev": true + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "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": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "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, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ylru": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.2.1.tgz", + "integrity": "sha512-faQrqNMzcPCHGVC2aaOINk13K+aaBDUPjGWl0teOXywElLjyVAB6Oe2jj62jHYtwsU49jXhScYbvPENK+6zAvQ==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + } + }, "dependencies": { "@75lb/deep-merge": { "version": "1.1.1", @@ -15,35 +12442,35 @@ } }, "@babel/code-frame": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", - "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "requires": { - "@babel/highlight": "^7.14.5" + "@babel/highlight": "^7.16.0" } }, "@babel/compat-data": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", - "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.0.tgz", + "integrity": "sha512-DGjt2QZse5SGd9nfOSqO4WLJ8NN/oHkijbXbPrxuoJO3oIPJL3TciZs9FX+cOHNiY9E9l0opL8g7BmLe3T+9ew==", "dev": true }, "@babel/core": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.8.tgz", - "integrity": "sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.15.8", - "@babel/generator": "^7.15.8", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.8", - "@babel/helpers": "^7.15.4", - "@babel/parser": "^7.15.8", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6", + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -53,75 +12480,75 @@ } }, "@babel/generator": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", - "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "requires": { - "@babel/types": "^7.15.6", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz", - "integrity": "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.15.4.tgz", - "integrity": "sha512-P8o7JP2Mzi0SdC6eWr1zF+AEYvrsZa7GSY1lTayjF5XJhVH0kjLYUZPvTMflP7tBgZoe9gIhTa60QwFpqh/E0Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-compilation-targets": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", - "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "requires": { - "@babel/compat-data": "^7.15.0", + "@babel/compat-data": "^7.16.0", "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", + "browserslist": "^4.17.5", "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz", - "integrity": "sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz", - "integrity": "sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz", - "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.4.tgz", + "integrity": "sha512-OrpPZ97s+aPi6h2n1OXzdhVis1SGSsMU2aMHgLcOKfsp4/v1NWpx3CWT3lBj5eeBq9cDkPkh+YCfdF7O12uNDQ==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.13.0", @@ -135,84 +12562,84 @@ } }, "@babel/helper-explode-assignable-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz", - "integrity": "sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-hoist-variables": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", - "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-transforms": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", - "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-plugin-utils": { @@ -222,53 +12649,53 @@ "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz", - "integrity": "sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.0.tgz", + "integrity": "sha512-MLM1IOMe9aQBqMWxcRw8dcb9jlM86NIw7KA0Wri91Xkfied+dE0QuBFSBjMNvqzmS0OSIDsMNC24dBEkPUi7ew==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-wrap-function": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz", - "integrity": "sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-validator-identifier": { @@ -284,92 +12711,101 @@ "dev": true }, "@babel/helper-wrap-function": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz", - "integrity": "sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helpers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", - "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz", + "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==", "dev": true, "requires": { - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.3", + "@babel/types": "^7.16.0" } }, "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", - "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.3.tgz", + "integrity": "sha512-dcNwU1O4sx57ClvLBVFbEgx0UZWfd0JQX5X6fxFRCLHelFBGXFfSz6Y0FAq2PEwUqlqLkdVjVr4VASEOuUnLJw==", "dev": true }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz", - "integrity": "sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4", - "@babel/plugin-proposal-optional-chaining": "^7.14.5" + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.8.tgz", - "integrity": "sha512-2Z5F2R2ibINTc63mY7FLqGfEbmofrHU9FitJW1Q7aPaKFhiPvSq6QEt/BoWN5oME3GVyjcRuNNSRbb9LC0CSWA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.0.tgz", + "integrity": "sha512-nyYmIo7ZqKsY6P4lnVmBlxp9B3a96CscbLotlsNuktMHahkDwoPYEjXrZHU0Tj844Z9f1IthVxQln57mhkcExw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.15.4", + "@babel/helper-remap-async-to-generator": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz", - "integrity": "sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-create-class-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-proposal-class-static-block": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz", - "integrity": "sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.15.4", + "@babel/helper-create-class-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz", - "integrity": "sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", @@ -377,9 +12813,9 @@ } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz", - "integrity": "sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", @@ -387,9 +12823,9 @@ } }, "@babel/plugin-proposal-json-strings": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz", - "integrity": "sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", @@ -397,9 +12833,9 @@ } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz", - "integrity": "sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", @@ -407,9 +12843,9 @@ } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz", - "integrity": "sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", @@ -417,9 +12853,9 @@ } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz", - "integrity": "sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", @@ -427,22 +12863,22 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz", - "integrity": "sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, "requires": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-compilation-targets": "^7.15.4", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.15.4" + "@babel/plugin-transform-parameters": "^7.16.0" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz", - "integrity": "sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", @@ -450,45 +12886,45 @@ } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz", - "integrity": "sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz", - "integrity": "sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-create-class-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz", - "integrity": "sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-create-class-features-plugin": "^7.15.4", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz", - "integrity": "sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-create-regexp-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, @@ -637,352 +13073,353 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", - "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz", + "integrity": "sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz", - "integrity": "sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz", - "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-module-imports": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.14.5" + "@babel/helper-remap-async-to-generator": "^7.16.0" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz", - "integrity": "sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.15.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz", - "integrity": "sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz", - "integrity": "sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz", - "integrity": "sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-destructuring": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz", - "integrity": "sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz", - "integrity": "sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-create-regexp-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz", - "integrity": "sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz", - "integrity": "sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-for-of": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz", - "integrity": "sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz", - "integrity": "sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.14.5", + "@babel/helper-function-name": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz", - "integrity": "sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz", - "integrity": "sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz", - "integrity": "sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-module-transforms": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz", - "integrity": "sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.15.4", + "@babel/helper-module-transforms": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-simple-access": "^7.15.4", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz", - "integrity": "sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.4", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz", - "integrity": "sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-module-transforms": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz", - "integrity": "sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" } }, "@babel/plugin-transform-new-target": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz", - "integrity": "sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-object-super": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz", - "integrity": "sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5" + "@babel/helper-replace-supers": "^7.16.0" } }, "@babel/plugin-transform-parameters": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz", - "integrity": "sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-property-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz", - "integrity": "sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-regenerator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz", - "integrity": "sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz", - "integrity": "sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz", - "integrity": "sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-spread": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.15.8.tgz", - "integrity": "sha512-/daZ8s2tNaRekl9YJa9X4bzjpeRZLt122cpgFnQPLGUe61PH8zMEBmYqKkW5xF5JUEh5buEGXJoQpqBmIbpmEQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4" + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz", - "integrity": "sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz", - "integrity": "sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz", - "integrity": "sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz", - "integrity": "sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz", - "integrity": "sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-create-regexp-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/preset-env": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.15.8.tgz", - "integrity": "sha512-rCC0wH8husJgY4FPbHsiYyiLxSY8oMDJH7Rl6RQMknbN9oDDHhM9RDFvnGM2MgkbUJzSQB4gtuwygY5mCqGSsA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.0.tgz", + "integrity": "sha512-cdTu/W0IrviamtnZiTfixPfIncr2M1VqRrkjzZWlr1B4TVYimCFK5jkyOdP4qw2MrlKHi+b3ORj6x8GoCew8Dg==", "dev": true, "requires": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-compilation-targets": "^7.15.4", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.15.4", - "@babel/plugin-proposal-async-generator-functions": "^7.15.8", - "@babel/plugin-proposal-class-properties": "^7.14.5", - "@babel/plugin-proposal-class-static-block": "^7.15.4", - "@babel/plugin-proposal-dynamic-import": "^7.14.5", - "@babel/plugin-proposal-export-namespace-from": "^7.14.5", - "@babel/plugin-proposal-json-strings": "^7.14.5", - "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", - "@babel/plugin-proposal-numeric-separator": "^7.14.5", - "@babel/plugin-proposal-object-rest-spread": "^7.15.6", - "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", - "@babel/plugin-proposal-optional-chaining": "^7.14.5", - "@babel/plugin-proposal-private-methods": "^7.14.5", - "@babel/plugin-proposal-private-property-in-object": "^7.15.4", - "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.0", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.0", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", @@ -997,44 +13434,44 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.14.5", - "@babel/plugin-transform-async-to-generator": "^7.14.5", - "@babel/plugin-transform-block-scoped-functions": "^7.14.5", - "@babel/plugin-transform-block-scoping": "^7.15.3", - "@babel/plugin-transform-classes": "^7.15.4", - "@babel/plugin-transform-computed-properties": "^7.14.5", - "@babel/plugin-transform-destructuring": "^7.14.7", - "@babel/plugin-transform-dotall-regex": "^7.14.5", - "@babel/plugin-transform-duplicate-keys": "^7.14.5", - "@babel/plugin-transform-exponentiation-operator": "^7.14.5", - "@babel/plugin-transform-for-of": "^7.15.4", - "@babel/plugin-transform-function-name": "^7.14.5", - "@babel/plugin-transform-literals": "^7.14.5", - "@babel/plugin-transform-member-expression-literals": "^7.14.5", - "@babel/plugin-transform-modules-amd": "^7.14.5", - "@babel/plugin-transform-modules-commonjs": "^7.15.4", - "@babel/plugin-transform-modules-systemjs": "^7.15.4", - "@babel/plugin-transform-modules-umd": "^7.14.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.9", - "@babel/plugin-transform-new-target": "^7.14.5", - "@babel/plugin-transform-object-super": "^7.14.5", - "@babel/plugin-transform-parameters": "^7.15.4", - "@babel/plugin-transform-property-literals": "^7.14.5", - "@babel/plugin-transform-regenerator": "^7.14.5", - "@babel/plugin-transform-reserved-words": "^7.14.5", - "@babel/plugin-transform-shorthand-properties": "^7.14.5", - "@babel/plugin-transform-spread": "^7.15.8", - "@babel/plugin-transform-sticky-regex": "^7.14.5", - "@babel/plugin-transform-template-literals": "^7.14.5", - "@babel/plugin-transform-typeof-symbol": "^7.14.5", - "@babel/plugin-transform-unicode-escapes": "^7.14.5", - "@babel/plugin-transform-unicode-regex": "^7.14.5", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.15.6", - "babel-plugin-polyfill-corejs2": "^0.2.2", - "babel-plugin-polyfill-corejs3": "^0.2.5", - "babel-plugin-polyfill-regenerator": "^0.2.2", - "core-js-compat": "^3.16.0", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.0", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.2.3", + "babel-plugin-polyfill-corejs3": "^0.3.0", + "babel-plugin-polyfill-regenerator": "^0.2.3", + "core-js-compat": "^3.19.0", "semver": "^6.3.0" } }, @@ -1052,49 +13489,49 @@ } }, "@babel/runtime": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz", - "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", + "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", + "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", "dev": true, "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.3", + "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } }, @@ -1105,9 +13542,9 @@ "dev": true }, "@eslint/eslintrc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.3.tgz", - "integrity": "sha512-DHI1wDPoKCBPoLZA3qDR91+3te/wDSc1YhKg3jR8NxKKRJq2hwHwcWv31cSwSYvIBrmbENoYMWcenW8uproQqg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz", + "integrity": "sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -1116,7 +13553,7 @@ "globals": "^13.9.0", "ignore": "^4.0.6", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" }, @@ -1130,15 +13567,11 @@ "type-fest": "^0.20.2" } }, - "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, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } + "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 } } }, @@ -1154,9 +13587,9 @@ } }, "@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, "@istanbuljs/load-nyc-config": { @@ -1172,6 +13605,15 @@ "resolve-from": "^5.0.0" }, "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, "js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", @@ -2024,9 +14466,9 @@ } }, "@sinonjs/fake-timers": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", - "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", "dev": true, "requires": { "@sinonjs/commons": "^1.7.0" @@ -2135,9 +14577,9 @@ } }, "@types/node": { - "version": "16.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", - "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==", + "version": "16.11.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.7.tgz", + "integrity": "sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==", "dev": true }, "@types/parse-json": { @@ -2173,16 +14615,6 @@ "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", "dev": true }, - "JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, - "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - } - }, "abab": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", @@ -2227,7 +14659,8 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true + "dev": true, + "requires": {} }, "acorn-walk": { "version": "7.2.0", @@ -2294,14 +14727,6 @@ "dev": true, "requires": { "type-fest": "^0.21.3" - }, - "dependencies": { - "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 - } } }, "ansi-regex": { @@ -2348,13 +14773,10 @@ "dev": true }, "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } + "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 }, "array-back": { "version": "6.2.0", @@ -2491,33 +14913,33 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz", - "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.3.tgz", + "integrity": "sha512-NDZ0auNRzmAfE1oDDPW2JhzIMXUk+FFe2ICejmt5T4ocKgiQx3e0VCRx9NCAidcMtL2RUZaWtXnmjTCkx0tcbA==", "dev": true, "requires": { "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.2", + "@babel/helper-define-polyfill-provider": "^0.2.4", "semver": "^6.1.1" } }, "babel-plugin-polyfill-corejs3": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz", - "integrity": "sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.3.0.tgz", + "integrity": "sha512-JLwi9vloVdXLjzACL80j24bG6/T1gYxwowG44dg6HN/7aTPdyPbJJidf6ajoA3RPHHtW0j9KMrSOLpIZpAnPpg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.2", - "core-js-compat": "^3.16.2" + "@babel/helper-define-polyfill-provider": "^0.2.4", + "core-js-compat": "^3.18.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", - "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.3.tgz", + "integrity": "sha512-JVE78oRZPKFIeUqFGrSORNzQnrDwZR16oiWeGM8ZyjBn2XAT5OjP+wXx5ESuo33nUsFUEJYjtklnsKbxW5L+7g==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.2" + "@babel/helper-define-polyfill-provider": "^0.2.4" } }, "babel-preset-current-node-syntax": { @@ -2627,13 +15049,13 @@ "dev": true }, "browserslist": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.5.tgz", - "integrity": "sha512-I3ekeB92mmpctWBoLXe0d5wPS2cBuRvvW0JyyJHMrk9/HmP2ZjrTboNAZ8iuGqaEIlKguljbQY32OkOJIRrgoA==", + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001271", - "electron-to-chromium": "^1.3.878", + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", "escalade": "^3.1.1", "node-releases": "^2.0.1", "picocolors": "^1.0.0" @@ -2727,9 +15149,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001272", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001272.tgz", - "integrity": "sha512-DV1j9Oot5dydyH1v28g25KoVm7l8MTxazwuiH3utWiAS6iL/9Nh//TGwqFEeqqN8nnWYQ8HHhUq+o4QPt9kvYw==", + "version": "1.0.30001280", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001280.tgz", + "integrity": "sha512-kFXwYvHe5rix25uwueBxC569o53J6TpnGu0BEEn+6Lhl2vsnAumRFWEBhDft1fwyo6m1r4i+RqA4+163FpeFcA==", "dev": true }, "catharsis": { @@ -2849,6 +15271,12 @@ "wrap-ansi": "^7.0.0" } }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -3058,12 +15486,12 @@ "dev": true }, "core-js-compat": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.0.tgz", - "integrity": "sha512-R09rKZ56ccGBebjTLZHvzDxhz93YPT37gBm6qUhnwj3Kt7aCjjZWD1injyNbyeFHxNKfeZBSyds6O9n3MKq1sw==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, "requires": { - "browserslist": "^4.17.5", + "browserslist": "^4.17.6", "semver": "7.0.0" }, "dependencies": { @@ -3176,36 +15604,36 @@ "dev": true }, "cssnano": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.8.tgz", - "integrity": "sha512-Lda7geZU0Yu+RZi2SGpjYuQz4HI4/1Y+BhdD0jL7NXAQ5larCzVn+PUGuZbDMYz904AXXCOgO5L1teSvgu7aFg==", + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.10.tgz", + "integrity": "sha512-YfNhVJJ04imffOpbPbXP2zjIoByf0m8E2c/s/HnvSvjXgzXMfgopVjAEGvxYOjkOpWuRQDg/OZFjO7WW94Ri8w==", "dev": true, "requires": { - "cssnano-preset-default": "^5.1.4", + "cssnano-preset-default": "^5.1.6", "is-resolvable": "^1.1.0", "lilconfig": "^2.0.3", "yaml": "^1.10.2" } }, "cssnano-preset-default": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.4.tgz", - "integrity": "sha512-sPpQNDQBI3R/QsYxQvfB4mXeEcWuw0wGtKtmS5eg8wudyStYMgKOQT39G07EbW1LB56AOYrinRS9f0ig4Y3MhQ==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.6.tgz", + "integrity": "sha512-X2nDeNGBXc0486oHjT2vSj+TdeyVsxRvJUxaOH50hOM6vSDLkKd0+59YXpSZRInJ4sNtBOykS4KsPfhdrU/35w==", "dev": true, "requires": { "css-declaration-sorter": "^6.0.3", "cssnano-utils": "^2.0.1", "postcss-calc": "^8.0.0", - "postcss-colormin": "^5.2.0", - "postcss-convert-values": "^5.0.1", + "postcss-colormin": "^5.2.1", + "postcss-convert-values": "^5.0.2", "postcss-discard-comments": "^5.0.1", "postcss-discard-duplicates": "^5.0.1", "postcss-discard-empty": "^5.0.1", "postcss-discard-overridden": "^5.0.1", - "postcss-merge-longhand": "^5.0.2", + "postcss-merge-longhand": "^5.0.3", "postcss-merge-rules": "^5.0.2", "postcss-minify-font-values": "^5.0.1", - "postcss-minify-gradients": "^5.0.2", + "postcss-minify-gradients": "^5.0.3", "postcss-minify-params": "^5.0.1", "postcss-minify-selectors": "^5.1.0", "postcss-normalize-charset": "^5.0.1", @@ -3220,7 +15648,7 @@ "postcss-ordered-values": "^5.0.2", "postcss-reduce-initial": "^5.0.1", "postcss-reduce-transforms": "^5.0.1", - "postcss-svgo": "^5.0.2", + "postcss-svgo": "^5.0.3", "postcss-unique-selectors": "^5.0.1" } }, @@ -3228,7 +15656,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==", - "dev": true + "dev": true, + "requires": {} }, "csso": { "version": "4.2.0", @@ -3451,9 +15880,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.884", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.884.tgz", - "integrity": "sha512-kOaCAa+biA98PwH5BpCkeUeTL6mCeg8p3Q3OhqzPyqhu/5QUnWAN2wr/3IK8xMQxIV76kfoQpP+Bn/wij/jXrg==", + "version": "1.3.895", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.895.tgz", + "integrity": "sha512-9Ww3fB8CWctjqHwkOt7DQbMZMpal2x2reod+/lU4b9axO1XJEDUpPMBxs7YnjLhhqpKXIIB5SRYN/B4K0QpvyQ==", "dev": true }, "emittery": { @@ -3584,12 +16013,12 @@ } }, "eslint": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.1.0.tgz", - "integrity": "sha512-JZvNneArGSUsluHWJ8g8MMs3CfIEzwaLx9KyH4tZ2i+R2/rPWzL8c0zg3rHdwYVpN/1sB9gqnjHwz9HoeJpGHw==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.2.0.tgz", + "integrity": "sha512-erw7XmM+CLxTOickrimJ1SiF55jiNlVSp2qqm0NuBWPtHYQCegD5ZMaW0c3i5ytPqL+SSLaCxdvQXFPLJn+ABw==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.0.3", + "@eslint/eslintrc": "^1.0.4", "@humanwhocodes/config-array": "^0.6.0", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -3623,7 +16052,7 @@ "progress": "^2.0.0", "regexpp": "^3.2.0", "semver": "^7.2.1", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" @@ -3701,6 +16130,12 @@ "requires": { "has-flag": "^4.0.0" } + }, + "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 } } }, @@ -3732,9 +16167,9 @@ } }, "eslint-visitor-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz", - "integrity": "sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", + "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", "dev": true }, "espree": { @@ -3942,9 +16377,9 @@ } }, "flatted": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", - "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", + "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", "dev": true }, "form-data": { @@ -4233,7 +16668,8 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true + "dev": true, + "requires": {} }, "ieee754": { "version": "1.2.1", @@ -4559,77 +16995,6 @@ "@jest/core": "^27.3.1", "import-local": "^3.0.2", "jest-cli": "^27.3.1" - }, - "dependencies": { - "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, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "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, - "requires": { - "color-name": "~1.1.4" - } - }, - "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 - }, - "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 - }, - "jest-cli": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.3.1.tgz", - "integrity": "sha512-WHnCqpfK+6EvT62me6WVs8NhtbjAS4/6vZJnk7/2+oOr50cwAzG4Wxt6RXX0hu6m1169ZGMlhYYUNeKBXCph/Q==", - "dev": true, - "requires": { - "@jest/core": "^27.3.1", - "@jest/test-result": "^27.3.1", - "@jest/types": "^27.2.5", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "import-local": "^3.0.2", - "jest-config": "^27.3.1", - "jest-util": "^27.3.1", - "jest-validate": "^27.3.1", - "prompts": "^2.0.1", - "yargs": "^16.2.0" - } - }, - "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, - "requires": { - "has-flag": "^4.0.0" - } - } } }, "jest-canvas-mock": { @@ -4731,6 +17096,77 @@ } } }, + "jest-cli": { + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.3.1.tgz", + "integrity": "sha512-WHnCqpfK+6EvT62me6WVs8NhtbjAS4/6vZJnk7/2+oOr50cwAzG4Wxt6RXX0hu6m1169ZGMlhYYUNeKBXCph/Q==", + "dev": true, + "requires": { + "@jest/core": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/types": "^27.2.5", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "jest-config": "^27.3.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "jest-config": { "version": "27.3.1", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.3.1.tgz", @@ -5235,7 +17671,8 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "dev": true + "dev": true, + "requires": {} }, "jest-regex-util": { "version": "27.0.6", @@ -5863,23 +18300,15 @@ "dev": true, "requires": { "argparse": "^2.0.1" - }, - "dependencies": { - "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 - } } }, "js2xmlparser": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.1.tgz", - "integrity": "sha512-KrPTolcw6RocpYjdC7pL7v62e55q7qOMHvLX1UCLc5AAS8qeJ6nukarEJAF2KL2PZxlbGueEbINqZR2bDe/gUw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", + "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", "dev": true, "requires": { - "xmlcreate": "^2.0.3" + "xmlcreate": "^2.0.4" } }, "jsdoc": { @@ -5998,6 +18427,16 @@ "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", "dev": true }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, "keygrip": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", @@ -6227,9 +18666,9 @@ } }, "lilconfig": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.3.tgz", - "integrity": "sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", + "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", "dev": true }, "lines-and-columns": { @@ -6287,16 +18726,17 @@ } }, "listr2": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.13.1.tgz", - "integrity": "sha512-pk4YBDA2cxtpM8iLHbz6oEsfZieJKHf6Pt19NlKaHZZVpqHyVs/Wqr7RfBBCeAFCJchGO7WQHVkUPZTvJMHk8w==", + "version": "3.13.3", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.13.3.tgz", + "integrity": "sha512-VqAgN+XVfyaEjSaFewGPcDs5/3hBbWVaX1VgWv2f52MF7US45JuARlArULctiB44IIcEk3JF7GtoFCLqEdeuPA==", "dev": true, "requires": { "cli-truncate": "^2.1.0", + "clone": "^2.1.2", "colorette": "^2.0.16", "log-update": "^4.0.0", "p-map": "^4.0.0", - "rxjs": "^6.6.7", + "rxjs": "^7.4.0", "through": "^2.3.8", "wrap-ansi": "^7.0.0" }, @@ -6741,13 +19181,25 @@ "linkify-it": "^2.0.0", "mdurl": "^1.0.1", "uc.micro": "^1.0.5" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + } } }, "markdown-it-anchor": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz", "integrity": "sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==", - "dev": true + "dev": true, + "requires": {} }, "marked": { "version": "2.1.3", @@ -6808,18 +19260,18 @@ "dev": true }, "mime-db": { - "version": "1.50.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", - "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==", + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", "dev": true }, "mime-types": { - "version": "2.1.33", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", - "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", "dev": true, "requires": { - "mime-db": "1.50.0" + "mime-db": "1.51.0" } }, "mimic-fn": { @@ -6948,12 +19400,6 @@ "thenify-all": "^1.0.0" } }, - "nanocolors": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.1.12.tgz", - "integrity": "sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ==", - "dev": true - }, "nanoid": { "version": "3.1.30", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", @@ -7408,21 +19854,21 @@ } }, "postcss-colormin": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.0.tgz", - "integrity": "sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.1.tgz", + "integrity": "sha512-VVwMrEYLcHYePUYV99Ymuoi7WhKrMGy/V9/kTS0DkCoJYmmjdOMneyhzYUxcNgteKDVbrewOkSM7Wje/MFwxzA==", "dev": true, "requires": { "browserslist": "^4.16.6", "caniuse-api": "^3.0.0", - "colord": "^2.0.1", + "colord": "^2.9.1", "postcss-value-parser": "^4.1.0" } }, "postcss-convert-values": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz", - "integrity": "sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.2.tgz", + "integrity": "sha512-KQ04E2yadmfa1LqXm7UIDwW1ftxU/QWZmz6NKnHnUvJ3LEYbbcX6i329f/ig+WnEByHegulocXrECaZGLpL8Zg==", "dev": true, "requires": { "postcss-value-parser": "^4.1.0" @@ -7432,25 +19878,29 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", - "dev": true + "dev": true, + "requires": {} }, "postcss-discard-duplicates": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", - "dev": true + "dev": true, + "requires": {} }, "postcss-discard-empty": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", - "dev": true + "dev": true, + "requires": {} }, "postcss-discard-overridden": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", - "dev": true + "dev": true, + "requires": {} }, "postcss-load-config": { "version": "3.1.0", @@ -7464,9 +19914,9 @@ } }, "postcss-merge-longhand": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz", - "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.3.tgz", + "integrity": "sha512-kmB+1TjMTj/bPw6MCDUiqSA5e/x4fvLffiAdthra3a0m2/IjTrWsTmD3FdSskzUjEwkj5ZHBDEbv5dOcqD7CMQ==", "dev": true, "requires": { "css-color-names": "^1.0.1", @@ -7497,12 +19947,12 @@ } }, "postcss-minify-gradients": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.2.tgz", - "integrity": "sha512-7Do9JP+wqSD6Prittitt2zDLrfzP9pqKs2EcLX7HJYxsxCOwrrcLt4x/ctQTsiOw+/8HYotAoqNkrzItL19SdQ==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.3.tgz", + "integrity": "sha512-Z91Ol22nB6XJW+5oe31+YxRsYooxOdFKcbOqY/V8Fxse1Y3vqlNRpi1cxCqoACZTQEhl+xvt4hsbWiV5R+XI9Q==", "dev": true, "requires": { - "colord": "^2.6", + "colord": "^2.9.1", "cssnano-utils": "^2.0.1", "postcss-value-parser": "^4.1.0" } @@ -7550,7 +20000,8 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true + "dev": true, + "requires": {} }, "postcss-modules-local-by-default": { "version": "4.0.0", @@ -7585,7 +20036,8 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", - "dev": true + "dev": true, + "requires": {} }, "postcss-normalize-display-values": { "version": "5.0.1", @@ -7706,13 +20158,13 @@ } }, "postcss-svgo": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.2.tgz", - "integrity": "sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.3.tgz", + "integrity": "sha512-41XZUA1wNDAZrQ3XgWREL/M2zSw8LJPvb5ZWivljBsUQAGoEKMYm6okHsTjJxKYI4M75RQEH4KYlEM52VwdXVA==", "dev": true, "requires": { "postcss-value-parser": "^4.1.0", - "svgo": "^2.3.0" + "svgo": "^2.7.0" } }, "postcss-unique-selectors": { @@ -8089,9 +20541,9 @@ } }, "rollup": { - "version": "2.58.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.58.3.tgz", - "integrity": "sha512-ei27MSw1KhRur4p87Q0/Va2NAYqMXOX++FNEumMBcdreIRLURKy+cE2wcDJKBn0nfmhP2ZGrJkP1XPO+G8FJQw==", + "version": "2.60.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.60.0.tgz", + "integrity": "sha512-cHdv9GWd58v58rdseC8e8XIaPUo8a9cgZpnCMMDGZFDZKEODOiPPEQFXLriWr/TjXzhPPmG5bkAztPsOARIcGQ==", "dev": true, "requires": { "fsevents": "~2.3.2" @@ -8227,12 +20679,12 @@ } }, "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz", + "integrity": "sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w==", "dev": true, "requires": { - "tslib": "^1.9.0" + "tslib": "~2.1.0" } }, "safe-buffer": { @@ -8509,10 +20961,10 @@ "integrity": "sha512-393j7aeF9iRdHvyANqEQU82UQmpw2CTxgsT83caefh+lOxavVLbVrw8Mr4zjXeZLh2+xeHZMKfVx4T0rJ/EchA==", "dev": true, "requires": { - "JSONStream": "^1.3.5", "ansi-escape-sequences": "^5.1.2", "byte-size": "^6.2.0", "common-log-format": "^1.0.0", + "JSONStream": "^1.3.5", "lodash.throttle": "^4.1.1", "stream-via": "^1.0.4", "table-layout": "~1.0.0" @@ -8563,6 +21015,15 @@ "readable-stream": "2" } }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, "string-argv": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", @@ -8602,15 +21063,6 @@ "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==", "dev": true }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, "stringify-object": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", @@ -8702,9 +21154,9 @@ } }, "svgo": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.7.0.tgz", - "integrity": "sha512-aDLsGkre4fTDCWvolyW+fs8ZJFABpzLXbtdK1y71CKnHzAnpDxKXPj2mNKj+pyOXUCzFHzuxRJ94XOFygOWV3w==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", "dev": true, "requires": { "@trysound/sax": "0.2.0", @@ -8712,7 +21164,7 @@ "css-select": "^4.1.3", "css-tree": "^1.1.3", "csso": "^4.2.0", - "nanocolors": "^0.1.12", + "picocolors": "^1.0.0", "stable": "^0.1.8" }, "dependencies": { @@ -8916,9 +21368,9 @@ } }, "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", "dev": true }, "tsscmp": { @@ -8943,9 +21395,9 @@ "dev": true }, "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==", + "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 }, "type-is": { @@ -8986,9 +21438,9 @@ "dev": true }, "uglify-js": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.2.tgz", - "integrity": "sha512-rtPMlmcO4agTUfz10CbgJ1k6UAoXM2gWb3GoMPPZB/+/Ackf8lNWk11K4rYi2D0apgoFRLtQOZhb+/iGNJq26A==", + "version": "3.14.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.3.tgz", + "integrity": "sha512-mic3aOdiq01DuSVx0TseaEzMIVqebMZ0Z3vaeDhFEh9bsc24hV1TFvN74reA2vs08D0ZWfNjAcJ3UbVLaBss+g==", "dev": true, "optional": true }, @@ -9268,7 +21720,8 @@ "version": "7.5.5", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", - "dev": true + "dev": true, + "requires": {} }, "xhr": { "version": "2.6.0", @@ -9317,9 +21770,9 @@ "dev": true }, "xmlcreate": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.3.tgz", - "integrity": "sha512-HgS+X6zAztGa9zIK3Y3LXuJes33Lz9x+YyTxgrkIdabu2vqcGOWwdfCpf1hWLRrd553wd4QCDf6BBO6FfdsRiQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", + "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==", "dev": true }, "xtend": { diff --git a/package.json b/package.json index 71413c6d..e1a99cc3 100644 --- a/package.json +++ b/package.json @@ -44,10 +44,10 @@ "./css/og.css": "./css/og.css" }, "devDependencies": { - "@babel/preset-env": "^7.15.8", + "@babel/preset-env": "^7.16.0", "@rollup/plugin-json": "^4.1.0", "@types/jest": "^27.0.2", - "eslint": "^8.1.0", + "eslint": "^8.2.0", "husky": "^7.0.4", "jaguarjs-jsdoc": "^1.1.0", "jest": "^27.3.1", @@ -59,7 +59,7 @@ "msdf-bmfont-xml": "^2.5.4", "postcss": "^8.3.11", "prettier": "^2.4.1", - "rollup": "^2.58.3", + "rollup": "^2.60.0", "rollup-plugin-postcss": "^4.0.1", "rollup-plugin-terser": "^7.0.2", "typescript": "^4.4.4"