From ab5067d783089aeac97d46ccbcb47a2fd70252f4 Mon Sep 17 00:00:00 2001 From: Paige Date: Sat, 18 Feb 2023 10:49:02 -0800 Subject: [PATCH] cleaned rollup config, bump rollup-plugin-typescript2 version to fix build, cleaned up tsconfig added github action for build CI fix prettier deprecated warning, npx prettier --fix ., fix pkg-ok (needed relative path for main in package.json) --- .github/workflows/node.yaml | 16 + .prettierrc | 1 - examples/js/traviso.min.js | 4 +- examples/js/traviso.min.js.map | 2 +- package-lock.json | 8975 +++++++++++++++++--------------- package.json | 13 +- rollup.config.js | 106 +- tsconfig.json | 32 - 8 files changed, 4875 insertions(+), 4274 deletions(-) create mode 100644 .github/workflows/node.yaml diff --git a/.github/workflows/node.yaml b/.github/workflows/node.yaml new file mode 100644 index 0000000..3bb26d5 --- /dev/null +++ b/.github/workflows/node.yaml @@ -0,0 +1,16 @@ +name: Node.js CI +on: + push: + branches: [master] +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + - run: npm ci + - run: npm run build --if-present + - run: npm test diff --git a/.prettierrc b/.prettierrc index f81d1b6..f7a9584 100644 --- a/.prettierrc +++ b/.prettierrc @@ -6,7 +6,6 @@ "tabWidth": 4, "useTabs": false, "arrowParens": "always", - "jsxBracketSameLine": false, "jsxSingleQuote": false, "bracketSpacing": true, "quoteProps": "as-needed" diff --git a/examples/js/traviso.min.js b/examples/js/traviso.min.js index c5f79d1..daa09f2 100644 --- a/examples/js/traviso.min.js +++ b/examples/js/traviso.min.js @@ -3,10 +3,10 @@ * Copyright (c) 2021, Hakan Karlidag - @axaq * www.travisojs.com * - * Compiled: Thu, 15 Jul 2021 13:16:01 UTC + * Compiled: Sat, 18 Feb 2023 19:19:17 UTC * * traviso.js is licensed under the MIT License. * http://www.opensource.org/licenses/mit-license */ -var TRAVISO=function(t,e){"use strict";var i=function(t,e){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i])})(t,e)};function n(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}i(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var o=function(){return(o=Object.assign||function(t){for(var e,i=1,n=arguments.length;ii)return o}return n+(o-n)*(t-e)/(i-e)},s=function(t){var e=Math.sqrt(t.x*t.x+t.y*t.y);return{x:t.x/e,y:t.y/e}},h=function(t,e){var i,n,o=t.y,r=t.x,a=e.length,s=!1;for(i=0,n=a-1;io!=e[n][1]>o&&r<(e[n][0]-e[i][0])*(o-e[i][1])/(e[n][1]-e[i][1])+e[i][0]&&(s=!s);return s},l=function(t,e){return Math.sqrt((e.x-t.x)*(e.x-t.x)+(e.y-t.y)*(e.y-t.y))},c={O:0,S:1,SW:2,W:3,NW:4,N:5,NE:6,E:7,SE:8},g=["idle","idle_s","idle_sw","idle_w","idle_nw","idle_n","idle_ne","idle_e","idle_se","move_s","move_sw","move_w","move_nw","move_n","move_ne","move_e","move_se"],p={ASTAR_ORTHOGONAL:0,ASTAR_DIAGONAL:1},u=!0;function f(t){u&&self.console.log("TRAVISO: "+t)}function d(t){return void 0===t&&(t=!0),u=t}var _=function(t,i,n){var o=t.mapData.objects[i];if(o){var r=null,a=o.textureNames[n];if(a&&a.length>0){r=[];for(var s=0;s0?t:.5},enumerable:!1,configurable:!0}),i.prototype.changeVisualToDirection=function(t,e,i,n,o,r){if(void 0===e&&(e=!1),void 0===i&&(i=!1),void 0===n&&(n=!1),void 0===o&&(o=null),void 0===r&&(r=null),this.changeVisual(e?g[t+8]:function(t){return g[t]}(t),i,n,o,r))this.currentDirection=t;else{if(!this.changeVisual("idle",i,n,o,r))throw new Error("no 'idle' visual defined as backup for object type "+this.type);this.currentDirection=c.O}},i.prototype.changeVisual=function(t,e,i,n,o){return void 0===e&&(e=!1),void 0===i&&(i=!1),void 0===n&&(n=null),void 0===o&&(o=null),!!this._textures[t]&&(this.currentInteractionOffset=this._interactionOffsets[t],this._container.textures!==this._textures[t]||i?(this._container.textures=this._textures[t],!e&&this._textures[t].length>1?(this._container.loop=!i,i&&n&&(this.onContainerAnimCompleteCallback=n,this._container.onComplete=this.onContainerAnimComplete_binded),r(o)&&o>0&&(this.animSpeed=o),this._container.gotoAndPlay(0)):this._container.gotoAndStop(0),this._engine.objectUpdateCallback&&this._engine.objectUpdateCallback(this),!0):(this._container.loop=!i,r(o)&&o>0&&(this.animSpeed=o),!0))},i.prototype.onContainerAnimComplete=function(){setTimeout(this.onContainerAnimComplete_delayed_binded,100)},i.prototype.onContainerAnimComplete_delayed=function(){this.onContainerAnimCompleteCallback(this),this.onContainerAnimCompleteCallback=null},i.prototype.destroy=function(){this._container&&(this._engine=null,this._textures=null,this._container.onComplete=null,this._container=null)},i}(e.Container),b=function(t){function i(i,n){var o=t.call(this)||this;o._isHighlighted=!1,o.onHighlightTweenEnd_binded=o.onHighlightTweenEnd.bind(o),o._engine=i,o.type=n;var r=o._engine.tileHalfHeight,a=o._engine.tileHalfWidth;o.vertices=[[-a,0],[0,-r],[a,0],[0,r]];var s=function(t,i){var n=t.mapData.tiles[i];if(n)return{m:n.movable,t:n.path?[e.Texture.from(n.path)]:[]};if(t.mapData.singleGroundImage)return{m:parseInt(i)>0,t:[]};throw new Error("TRAVISO: No info defined for tile type: "+i)}(o._engine,o.type);if(o.isMovableTo=s.m,s.t.length>0&&(o._tileGraphics=new e.AnimatedSprite(s.t),o._tileGraphics.anchor.x=.5,o._tileGraphics.anchor.y=.5,o.addChild(o._tileGraphics),o._tileGraphics.gotoAndStop(parseInt(o.type))),o._engine.mapData.tileHighlightImage)o._highlightedOverlay=new e.Sprite(e.Texture.from(o._engine.mapData.tileHighlightImage.path)),o._highlightedOverlay.anchor.x=.5,o._highlightedOverlay.anchor.y=.5,o.addChild(o._highlightedOverlay);else{o._highlightedOverlay=new e.Graphics,o._highlightedOverlay.clear(),o._highlightedOverlay.lineStyle(o._engine.tileHighlightStrokeAlpha<=0?0:2,o._engine.tileHighlightStrokeColor,o._engine.tileHighlightStrokeAlpha),o._highlightedOverlay.beginFill(o._engine.tileHighlightFillColor,o._engine.tileHighlightFillAlpha),o._highlightedOverlay.moveTo(o.vertices[0][0],o.vertices[0][1]);for(var h=1;h=0){var g=t.tweens;if(g||(g=[]),c.overwrite){for(var p=0;p0&&!this._activeForTweens&&(this._activeForTweens=!0)}},t.prototype.removeTween=function(t,e){var i=!1;if(t&&e){var n=this._tweenTargets.indexOf(t);if(!(n>=0))throw new Error("No tween target defined for this object");if(!(this._tweenTargets[n].tweens&&this._tweenTargets[n].tweens.length>0))throw new Error("No tween defined for this object");var o=this._tweenTargets[n].tweens,r=o.indexOf(e);if(!(r>=0))throw new Error("No tween defined for this object");e.onComplete=null,e.easingFunc=null,e.target=null,o.splice(r,1),0===o.length&&(this._tweenTargets.splice(n,1),i=!0),0===this._tweenTargets.length&&(this._activeForTweens=!1)}return i},t.prototype.killTweensOf=function(t){var e=!1,i=this._tweenTargets.indexOf(t);if(i>=0){if(this._tweenTargets[i].tweens&&this._tweenTargets[i].tweens.length>0){for(var n=this._tweenTargets[i].tweens,o=0;o=0||(this._movables[this._movables.length]=t,this._movables.length>0&&!this._activeForMovables&&(this._activeForMovables=!0))},t.prototype.removeMovable=function(t){var e=this._movables.indexOf(t);return-1!==e&&(t.speedUnit={x:0,y:0},this._movables.splice(e,1)),0===this._movables.length&&(this._activeForMovables=!1),-1!==e},t.prototype.removeAllMovables=function(){this._activeForMovables=!1;for(var t=this._movables.length,e=0;e=n.totalFrames&&(n.onComplete&&n.onComplete(),this.removeTween(o,n)&&(i--,t--),a--)}}}},t.prototype.destroy=function(){f("MoveEngine destroy"),this._processFrame=!1,this._ticker&&this._ticker.stop(),this.removeAllMovables(),this.removeAllTweens(),this._movables=null,this._tweenTargets=null,this._engine=null,this._ticker=null},t}(),w=function(){function t(t,e,i){this.x=t,this.y=e,this.weight=i,this.mapPos={c:t,r:e}}return t.prototype.toString=function(){return"["+String(this.x)+" "+String(this.y)+"]"},t.prototype.getCost=function(t){return t&&t.x!==this.x&&t.y!==this.y?1.41421*this.weight:this.weight},t.prototype.isWall=function(){return 0===this.weight},t}(),S=function(){function t(t){this.content=[],this.scoreFunction=t}return t.prototype.push=function(t){this.content.push(t),this.sinkDown(this.content.length-1)},t.prototype.pop=function(){var t=this.content[0],e=this.content.pop();return this.content.length>0&&(this.content[0]=e,this.bubbleUp(0)),t},t.prototype.size=function(){return this.content.length},t.prototype.rescoreElement=function(t){this.sinkDown(this.content.indexOf(t))},t.prototype.sinkDown=function(t){for(var e=this.content[t];t>0;){var i=(t+1>>1)-1,n=this.content[i];if(!(this.scoreFunction(e)0?a:null},t.prototype.getAdjacentOpenCells=function(t,e,i,n){var o,r,a=[];for(o=e;o>e-n;o--)for(r=t;r0;){var h=a.pop();if(h===i)return this.pathTo(h);h.closed=!0;for(var l=this.neighbors(h),c=0,g=l.length;c0&&t.add(this._config.assetsToLoad),t.load(this.assetsAndDataLoaded.bind(this))},i.prototype.assetsAndDataLoaded=function(t){var e,i,n,o=t.resources.mapData.data;r(o.initialControllableLocation)?r(o.initialControllableLocation.columnIndex)&&r(o.initialControllableLocation.rowIndex)||(f("Map-data file warning: 'initialControllableLocation' exists but it is not defined properly."),o.initialControllableLocation=null):f("Map-data file warning: No 'initialControllableLocation' defined. Ignore this warning if you are adding it later manually."),o.tileHighlightImage&&!o.tileHighlightImage.path&&(f("Map-data file warning: 'tileHighlightImage' exists but its 'path' is not defined properly."),o.tileHighlightImage=null),o.singleGroundImage&&!o.singleGroundImage.path&&(f("Map-data file warning: 'singleGroundImage' exists but its 'path' is not defined properly."),o.singleGroundImage=null);var a,s,h,l,c,g,p,u,d=o.groundMap;for(o.groundMapData=[],e=0;e0)for(g[l]=[],p=0;p>1,y:this._posFrame.h>>1},this.createMap(),this.repositionContent(this._config.initialPositionFrame),this.enableInteraction(),this._config.engineInstanceReadyCallback&&this._config.engineInstanceReadyCallback(this)},i.prototype.createMap=function(){this._config.backgroundColor&&(this._bg=new e.Graphics,this.addChild(this._bg)),this._config.useMask&&(this._mapMask=new e.Graphics,this.addChild(this._mapMask)),this._mapContainer=new e.Container,this.addChild(this._mapContainer),this._groundContainer=new e.Container,this._mapContainer.addChild(this._groundContainer),this._objContainer=new e.Container,this._mapContainer.addChild(this._objContainer);var t,i,n,o,r=this.mapData.groundMapData,a=this.mapData.objectsMapData,s=this.mapData.initialControllableLocation;for(this._mapSizeR=r.length,this._mapSizeC=r[0].length,this.mapData.singleGroundImage&&(t=new e.Sprite(e.Texture.from(this.mapData.singleGroundImage.path)),this._groundContainer.addChild(t),t.scale.set(this.mapData.singleGroundImage.scale||1)),this._tileArray=[],this._objArray=[],i=0;i=0;n--)this._tileArray[i][n]=null,r[i][n]&&"0"!==r[i][n]?((o=new b(this,r[i][n])).position.x=this.getTilePosXFor(i,n),o.position.y=this.getTilePosYFor(i,n),o.mapPos={c:n,r:i},this._tileArray[i][n]=o,this._groundContainer.addChild(o),o.isMovableTo||this._pathFinding.setCell(n,i,0)):this._pathFinding.setCell(n,i,0);var h,l=!1;for(i=0;i=0;n--)this._objArray[i][n]=null,a[i][n]&&"0"!==a[i][n]&&((h=new m(this,a[i][n])).position.x=this.getTilePosXFor(i,n),h.position.y=this.getTilePosYFor(i,n)+this.tileHalfHeight,h.mapPos={c:n,r:i},!l&&h.isFloorObject&&(l=!0),this._objContainer.addChild(h),this.addObjRefToLocation(h,h.mapPos),s&&s.columnIndex===n&&s.rowIndex===i&&(this._currentControllable=h));if(l){var c=void 0,g=void 0;for(i=0;i=0;n--)if(c=this._objArray[i][n])for(g=0;g>1)-this.getTilePosXFor(e,t)*this._currentScale,o=this._externalCenter.y-this.getTilePosYFor(e,t)*this._currentScale;this.centralizeToPoint(n,o,i)},i.prototype.centralizeToCurrentFocusLocation=function(t){this.centralizeToLocation(this._currentFocusLocation.c,this._currentFocusLocation.r,t)},i.prototype.centralizeToCurrentExternalCenter=function(t){this._externalCenter&&(this._currentFocusLocation={c:this._mapSizeC>>1,r:this._mapSizeR>>1},this.centralizeToPoint(this._externalCenter.x,this._externalCenter.y,t))},i.prototype.centralizeToPoint=function(t,e,i){this._tileArray&&(t-=this._mapVisualWidthScaled>>1,r(i)&&i||!r(i)&&this._config.instantCameraRelocation?(this._mapContainer.position.x=t,this._mapContainer.position.y=e):this.moveEngine.addTween(this._mapContainer.position,.5,{x:t,y:e},0,"easeInOut",!0))},i.prototype.setZoomParameters=function(t,e,i,n,o){void 0===t&&(t=.5),void 0===e&&(e=1.5),void 0===i&&(i=5),void 0===n&&(n=0),void 0===o&&(o=!1),this._config.minScale=t,this._config.maxScale=e,this._config.minZoom=-1,this._config.maxZoom=1,this._config.zoomIncrement=r(i)?i<=1?0:2/(i-1):.5,this._config.initialZoomLevel=n,this._config.instantCameraZoom=o},i.prototype.setScale=function(t,e){tthis._config.maxScale&&(t=this._config.maxScale),this._currentScale=t,this._mapVisualWidthScaled=this._mapVisualWidthReal*this._currentScale,r(e)&&e||!r(e)&&this._config.instantCameraZoom?this._mapContainer.scale.set(this._currentScale):this.moveEngine.addTween(this._mapContainer.scale,.5,{x:this._currentScale,y:this._currentScale},0,"easeInOut",!0)},i.prototype.zoomTo=function(t,e){var i=a(t=t||0,this._config.minZoom,this._config.maxZoom,this._config.minScale,this._config.maxScale,!0);i=Math.round(10*i)/10,this._currentZoom=a(i,this._config.minScale,this._config.maxScale,this._config.minZoom,this._config.maxZoom,!0),this._externalCenter=this._externalCenter?this._externalCenter:{x:this._mapVisualWidthScaled>>1,y:0};var n=this._mapContainer.position.x+(this._mapVisualWidthScaled>>1)-this._externalCenter.x,o=this._mapContainer.position.y-this._externalCenter.y,s=this._currentScale;this.setScale(i,e);var h=this._currentScale/s;this.centralizeToPoint(this._externalCenter.x+n*h,this._externalCenter.y+o*h,r(e)&&e||!r(e)&&this._config.instantCameraZoom)},i.prototype.zoomOut=function(t){this.zoomTo(this._currentZoom-this._config.zoomIncrement,t)},i.prototype.zoomIn=function(t){this.zoomTo(this._currentZoom+this._config.zoomIncrement,t)},i.prototype.getCurrentControllable=function(){return this._currentControllable},i.prototype.setCurrentControllable=function(t){this._currentControllable=t},i.prototype.addObjRefToLocation=function(t,e){var i,n;for(i=e.c;ie.r-t.rowSpan;n--)this.addObjRefToSingleLocation(t,{c:i,r:n})},i.prototype.addObjRefToSingleLocation=function(t,e){this._objArray[e.r][e.c]||(this._objArray[e.r][e.c]=[]),this._objArray[e.r][e.c].indexOf(t)<0&&this._objArray[e.r][e.c].push(t),t.isMovableTo||this._pathFinding.setDynamicCell(e.c,e.r,0)},i.prototype.removeObjRefFromLocation=function(t,e){var i,n;for(i=e.c;ie.r-t.rowSpan;n--)this.removeObjRefFromSingleLocation(t,{c:i,r:n})},i.prototype.removeObjRefFromSingleLocation=function(t,e){if(this._objArray[e.r][e.c]){var i=this._objArray[e.r][e.c].indexOf(t);if(i>-1&&this._objArray[e.r][e.c].splice(i,1),0===this._objArray[e.r][e.c].length)this._pathFinding.setDynamicCell(e.c,e.r,1),this._objArray[e.r][e.c]=null;else for(var n=this._objArray[e.r][e.c],o=n.length,r=0;r0&&this.changeObjAlphasInLocation(1,{c:e.c-1,r:e.r}),e.c>0&&e.r0&&this.changeObjAlphasInLocation(.7,{c:i.c-1,r:i.r}),i.c>0&&i.r=0;n--)if(e=this._objArray[i][n])for(o=0;oo&&(a=n===r?c.NW:nt.currentPathStep;(this.moveEngine.removeMovable(t),e?t.changeVisualToDirection(t.currentDirection,!1):this._config.checkPathOnEachTile?this.checkAndMoveObjectToLocation(t,t.currentPath[0].mapPos):(t.currentPath.splice(t.currentPath.length-1,1),this.moveObjThrough(t,t.currentPath)),this._currentControllable===t)&&this._tileArray[t.mapPos.r][t.mapPos.c].setHighlighted(!1,!this._config.tileHighlightAnimated);e&&this._config.objectReachedDestinationCallback&&this._config.objectReachedDestinationCallback(t)},i.prototype.checkForFollowCharacter=function(t){if(this._config.followCharacter&&this._currentControllable===t){this._currentFocusLocation={c:t.mapPos.c,r:t.mapPos.r};var e=this._externalCenter.x-t.position.x*this._currentScale,i=this._externalCenter.y-t.position.y*this._currentScale;this.moveEngine.addTween(this._mapContainer.position,.1,{x:e,y:i},0,"easeOut",!0)}},i.prototype.checkForTileChange=function(t){this._config.objectUpdateCallback&&this._config.objectUpdateCallback(t);for(var e={x:t.position.x,y:t.position.y-this.tileHalfHeight},i=this._tileArray[t.currentTargetTile.mapPos.r][t.currentTargetTile.mapPos.c],n=[],o=0;o1&&this._config.otherObjectsOnTheNextTileCallback&&this._config.otherObjectsOnTheNextTileCallback(t,r)}},i.prototype.getPath=function(t,e){if(this._pathFinding)return this._pathFinding.solve(t.c,t.r,e.c,e.r);throw new Error("Path finding hasn't been initialized yet!")},i.prototype.checkAndMoveObjectToTile=function(t,e,i){return void 0===i&&(i=null),!!e.isMovableTo&&this.checkAndMoveObjectToLocation(t,e.mapPos,i)},i.prototype.checkAndMoveObjectToLocation=function(t,e,i){void 0===i&&(i=null);var n=this.getPath(t.mapPos,e);return!!n&&(this.moveObjThrough(t,n,i),n.length>0)},i.prototype.moveCurrentControllableToLocation=function(t,e){if(void 0===e&&(e=null),!this._currentControllable)throw new Error("TRAVISO: _currentControllable is not defined!");return this.checkAndMoveObjectToLocation(this._currentControllable,t,e)},i.prototype.moveCurrentControllableToObj=function(t,e){if(void 0===e&&(e=null),!this._currentControllable)throw new Error("TRAVISO: _currentControllable is not defined!");if(t.currentInteractionOffset){var i={c:t.mapPos.c+t.currentInteractionOffset.c,r:t.mapPos.r+t.currentInteractionOffset.r};if(this.checkAndMoveObjectToLocation(this._currentControllable,i,e))return!0}for(var n,o,r,a,s=this._pathFinding.getAdjacentOpenCells(t.mapPos.c,t.mapPos.r,t.columnSpan,t.rowSpan),h=3e3,l=0;lthis._posFrame.x+this._posFrame.w||t.y>this._posFrame.y+this._posFrame.h)},i.prototype.onMouseDown=function(t){var e=t.data.global;!this._dragging&&this.isInteractionInMask(e)&&(this._dragging=!0,this._dragInitStartingX=this._dragPrevStartingX=e.x,this._dragInitStartingY=this._dragPrevStartingY=e.y)},i.prototype.onMouseMove=function(t){if(this._dragging&&this._config.mapDraggable){var e=t.data.global;this._mapContainer.position.x+=e.x-this._dragPrevStartingX,this._mapContainer.position.y+=e.y-this._dragPrevStartingY,this._dragPrevStartingX=e.x,this._dragPrevStartingY=e.y}},i.prototype.onMouseUp=function(t){if(this._dragging){this._dragging=!1;var e=t.data.global.x-this._dragInitStartingX,i=t.data.global.y-this._dragInitStartingY;Math.abs(e)<5&&Math.abs(i)<5&&this.checkForTileClick(t.data)}},i.prototype.repositionContent=function(t){void 0===t&&(t=null),f("EngineView repositionContent"),t=t||this._posFrame||{x:0,y:0,w:800,h:600},this.position.x=t.x,this.position.y=t.y,this._externalCenter={x:t.w>>1,y:t.h>>1},this.centralizeToCurrentFocusLocation(!0),this._bg&&(this._bg.clear(),this._bg.beginFill(this._config.backgroundColor,1),this._bg.drawRect(0,0,t.w,t.h),this._bg.endFill()),this._mapMask&&this._mapContainer&&(this._mapMask.clear(),this._mapMask.beginFill(0),this._mapMask.drawRect(0,0,t.w,t.h),this._mapMask.endFill(),this._mapContainer.mask=this._mapMask),this._posFrame=t},i.prototype.destroy=function(){var t,e,i,n;for(f("EngineView destroy"),this.disableInteraction(),this.moveEngine.destroy(),this.moveEngine=null,e=0;e=0;i--){if((t=this._tileArray[e][i])&&t.destroy(),this._tileArray[e][i]=null,t=this._objArray[e][i])for(n=0;n-1){var e=["\n %c %c %c Traviso.js - 0.1.5 %c %c http://www.travisojs.com/ %c \n\n","background: #18bc9c; padding:5px 0;","background: #18bc9c; padding:5px 0;","color: #18bc9c; background: #030307; padding:5px 0;","background: #18bc9c; padding:5px 0;","background: #5ad2ba; padding:5px 0;","background: #18bc9c; padding:5px 0;"];(t=self.console).log.apply(t,e)}else self.console&&self.console.log("Traviso.js 0.1.5 - http://www.travisojs.com/");A=!0}}(),f("Traviso initiated. (Version: 0.1.5)"))};return t.DIRECTIONS=c,t.EngineView=P,t.ObjectView=m,t.PF_ALGORITHMS=p,t.TileView=b,t.VERSION=x,t.dotProduct=function(t,e){return t.x*e.x+t.y*e.y},t.enableDisableLogging=d,t.existy=r,t.getDist=l,t.getEngineInstance=function(t,e){return void 0===e&&(e=null),k(e),new P(t)},t.getUnit=s,t.isInPolygon=h,t.mathMap=a,t.skipHello=function(){A=!0},t.trace=f,Object.defineProperty(t,"__esModule",{value:!0}),t}({},PIXI); +var TRAVISO=function(t,e){"use strict";var i=function(t,e){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i])},i(t,e)};function n(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}i(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var o=function(){return o=Object.assign||function(t){for(var e,i=1,n=arguments.length;ii)return o}return n+(o-n)*(t-e)/(i-e)},s=function(t){var e=Math.sqrt(t.x*t.x+t.y*t.y);return{x:t.x/e,y:t.y/e}},h=function(t,e){var i,n,o=t.y,r=t.x,a=e.length,s=!1;for(i=0,n=a-1;io!=e[n][1]>o&&r<(e[n][0]-e[i][0])*(o-e[i][1])/(e[n][1]-e[i][1])+e[i][0]&&(s=!s);return s},l=function(t,e){return Math.sqrt((e.x-t.x)*(e.x-t.x)+(e.y-t.y)*(e.y-t.y))},c={O:0,S:1,SW:2,W:3,NW:4,N:5,NE:6,E:7,SE:8},g=["idle","idle_s","idle_sw","idle_w","idle_nw","idle_n","idle_ne","idle_e","idle_se","move_s","move_sw","move_w","move_nw","move_n","move_ne","move_e","move_se"],p={ASTAR_ORTHOGONAL:0,ASTAR_DIAGONAL:1},u=!0;function f(t){u&&self.console.log("TRAVISO: "+t)}function d(t){return void 0===t&&(t=!0),u=t}var _=function(t,e){var i=t.mapData.objects[e];if(i){var n={};for(var o in i.textureNames)Object.prototype.hasOwnProperty.call(i.textureNames,o)&&(n[o]=m(t,e,o));return{m:i.m,i:i.i,f:i.f,nt:i.nt,t:n,io:i.io,s:i.s,rowSpan:i.rowSpan,columnSpan:i.columnSpan}}throw new Error("TRAVISO: No info defined for object type: "+e)},m=function(t,i,n){var o=t.mapData.objects[i];if(o){var r=null,a=o.textureNames[n];if(a&&a.length>0){r=[];for(var s=0;s0,t:[]};throw new Error("TRAVISO: No info defined for tile type: "+i)},v=function(t){function i(i,n,o){void 0===o&&(o=.5);var r=t.call(this)||this;r.onContainerAnimComplete_delayed_binded=r.onContainerAnimComplete_delayed.bind(r),r.onContainerAnimComplete_binded=r.onContainerAnimComplete.bind(r),r._engine=i,r.type=n;var a=_(r._engine,r.type);r.isMovableTo=a.m,r.isInteractive=a.i,r.interactive=r.interactiveChildren=!1,r.isFloorObject=a.f,r.noTransparency=a.nt,r.rowSpan=a.rowSpan,r.columnSpan=a.columnSpan;var s=r.rowSpan/(r.columnSpan+r.rowSpan);return r._textures=a.t,r._interactionOffsets=a.io,r.currentInteractionOffset=r._interactionOffsets.idle,r._container=new e.AnimatedSprite(r._textures.idle),r._container.interactive=r._container.interactiveChildren=!1,r._container.anchor.x=s,r._container.anchor.y=1,r.addChild(r._container),r.animSpeed=o,r._container.gotoAndStop(0),r}return n(i,t),Object.defineProperty(i.prototype,"animSpeed",{get:function(){return this._container.animationSpeed},set:function(t){this._container.animationSpeed=r(t)&&t>0?t:.5},enumerable:!1,configurable:!0}),i.prototype.changeVisualToDirection=function(t,e,i,n,o,r){if(void 0===e&&(e=!1),void 0===i&&(i=!1),void 0===n&&(n=!1),void 0===o&&(o=null),void 0===r&&(r=null),this.changeVisual(e?g[t+8]:function(t){return g[t]}(t),i,n,o,r))this.currentDirection=t;else{if(!this.changeVisual("idle",i,n,o,r))throw new Error("no 'idle' visual defined as backup for object type "+this.type);this.currentDirection=c.O}},i.prototype.changeVisual=function(t,e,i,n,o){return void 0===e&&(e=!1),void 0===i&&(i=!1),void 0===n&&(n=null),void 0===o&&(o=null),!!this._textures[t]&&(this.currentInteractionOffset=this._interactionOffsets[t],this._container.textures!==this._textures[t]||i?(this._container.textures=this._textures[t],!e&&this._textures[t].length>1?(this._container.loop=!i,i&&n&&(this.onContainerAnimCompleteCallback=n,this._container.onComplete=this.onContainerAnimComplete_binded),r(o)&&o>0&&(this.animSpeed=o),this._container.gotoAndPlay(0)):this._container.gotoAndStop(0),this._engine.objectUpdateCallback&&this._engine.objectUpdateCallback(this),!0):(this._container.loop=!i,r(o)&&o>0&&(this.animSpeed=o),!0))},i.prototype.onContainerAnimComplete=function(){setTimeout(this.onContainerAnimComplete_delayed_binded,100)},i.prototype.onContainerAnimComplete_delayed=function(){this.onContainerAnimCompleteCallback(this),this.onContainerAnimCompleteCallback=null},i.prototype.destroy=function(){this._container&&(this._engine=null,this._textures=null,this._container.onComplete=null,this._container=null)},i}(e.Container),y=function(t){function i(i,n){var o=t.call(this)||this;o._isHighlighted=!1,o.onHighlightTweenEnd_binded=o.onHighlightTweenEnd.bind(o),o._engine=i,o.type=n;var r=o._engine.tileHalfHeight,a=o._engine.tileHalfWidth;o.vertices=[[-a,0],[0,-r],[a,0],[0,r]];var s=b(o._engine,o.type);if(o.isMovableTo=s.m,s.t.length>0&&(o._tileGraphics=new e.AnimatedSprite(s.t),o._tileGraphics.anchor.x=.5,o._tileGraphics.anchor.y=.5,o.addChild(o._tileGraphics),o._tileGraphics.gotoAndStop(parseInt(o.type))),o._engine.mapData.tileHighlightImage)o._highlightedOverlay=new e.Sprite(e.Texture.from(o._engine.mapData.tileHighlightImage.path)),o._highlightedOverlay.anchor.x=.5,o._highlightedOverlay.anchor.y=.5,o.addChild(o._highlightedOverlay);else{o._highlightedOverlay=new e.Graphics,o._highlightedOverlay.clear(),o._highlightedOverlay.lineStyle(o._engine.tileHighlightStrokeAlpha<=0?0:2,o._engine.tileHighlightStrokeColor,o._engine.tileHighlightStrokeAlpha),o._highlightedOverlay.beginFill(o._engine.tileHighlightFillColor,o._engine.tileHighlightFillAlpha),o._highlightedOverlay.moveTo(o.vertices[0][0],o.vertices[0][1]);for(var h=1;h=0){var g=t.tweens;if(g||(g=[]),c.overwrite){for(var p=0;p0&&!this._activeForTweens&&(this._activeForTweens=!0)}},t.prototype.removeTween=function(t,e){var i=!1;if(t&&e){var n=this._tweenTargets.indexOf(t);if(!(n>=0))throw new Error("No tween target defined for this object");if(!(this._tweenTargets[n].tweens&&this._tweenTargets[n].tweens.length>0))throw new Error("No tween defined for this object");var o=this._tweenTargets[n].tweens,r=o.indexOf(e);if(!(r>=0))throw new Error("No tween defined for this object");e.onComplete=null,e.easingFunc=null,e.target=null,o.splice(r,1),0===o.length&&(this._tweenTargets.splice(n,1),i=!0),0===this._tweenTargets.length&&(this._activeForTweens=!1)}return i},t.prototype.killTweensOf=function(t){var e=!1,i=this._tweenTargets.indexOf(t);if(i>=0){if(this._tweenTargets[i].tweens&&this._tweenTargets[i].tweens.length>0){for(var n=this._tweenTargets[i].tweens,o=0;o=0||(this._movables[this._movables.length]=t,this._movables.length>0&&!this._activeForMovables&&(this._activeForMovables=!0))},t.prototype.removeMovable=function(t){var e=this._movables.indexOf(t);return-1!==e&&(t.speedUnit={x:0,y:0},this._movables.splice(e,1)),0===this._movables.length&&(this._activeForMovables=!1),-1!==e},t.prototype.removeAllMovables=function(){this._activeForMovables=!1;for(var t=this._movables.length,e=0;e=n.totalFrames&&(n.onComplete&&n.onComplete(),this.removeTween(o,n)&&(i--,t--),a--)}}}},t.prototype.destroy=function(){f("MoveEngine destroy"),this._processFrame=!1,this._ticker&&this._ticker.stop(),this.removeAllMovables(),this.removeAllTweens(),this._movables=null,this._tweenTargets=null,this._engine=null,this._ticker=null},t}(),j=function(){function t(t,e,i){this.x=t,this.y=e,this.weight=i,this.mapPos={c:t,r:e}}return t.prototype.toString=function(){return"["+String(this.x)+" "+String(this.y)+"]"},t.prototype.getCost=function(t){return t&&t.x!==this.x&&t.y!==this.y?1.41421*this.weight:this.weight},t.prototype.isWall=function(){return 0===this.weight},t}(),P=function(){function t(t){this.content=[],this.scoreFunction=t}return t.prototype.push=function(t){this.content.push(t),this.sinkDown(this.content.length-1)},t.prototype.pop=function(){var t=this.content[0],e=this.content.pop();return this.content.length>0&&(this.content[0]=e,this.bubbleUp(0)),t},t.prototype.size=function(){return this.content.length},t.prototype.rescoreElement=function(t){this.sinkDown(this.content.indexOf(t))},t.prototype.sinkDown=function(t){for(var e=this.content[t];t>0;){var i=(t+1>>1)-1,n=this.content[i];if(!(this.scoreFunction(e)0?a:null},t.prototype.getAdjacentOpenCells=function(t,e,i,n){var o,r,a=[];for(o=e;o>e-n;o--)for(r=t;r0;){var h=a.pop();if(h===i)return this.pathTo(h);h.closed=!0;for(var l=this.neighbors(h),c=0,g=l.length;c0&&t.add(this._config.assetsToLoad),t.load(this.assetsAndDataLoaded.bind(this))},i.prototype.assetsAndDataLoaded=function(t){var e,i,n,o=t.resources.mapData.data;r(o.initialControllableLocation)?r(o.initialControllableLocation.columnIndex)&&r(o.initialControllableLocation.rowIndex)||(f("Map-data file warning: 'initialControllableLocation' exists but it is not defined properly."),o.initialControllableLocation=null):f("Map-data file warning: No 'initialControllableLocation' defined. Ignore this warning if you are adding it later manually."),o.tileHighlightImage&&!o.tileHighlightImage.path&&(f("Map-data file warning: 'tileHighlightImage' exists but its 'path' is not defined properly."),o.tileHighlightImage=null),o.singleGroundImage&&!o.singleGroundImage.path&&(f("Map-data file warning: 'singleGroundImage' exists but its 'path' is not defined properly."),o.singleGroundImage=null);var a,s,h,l,c,g,p,u,d=o.groundMap;for(o.groundMapData=[],e=0;e0)for(g[l]=[],p=0;p>1,y:this._posFrame.h>>1},this.createMap(),this.repositionContent(this._config.initialPositionFrame),this.enableInteraction(),this._config.engineInstanceReadyCallback&&this._config.engineInstanceReadyCallback(this)},i.prototype.createMap=function(){this._config.backgroundColor&&(this._bg=new e.Graphics,this.addChild(this._bg)),this._config.useMask&&(this._mapMask=new e.Graphics,this.addChild(this._mapMask)),this._mapContainer=new e.Container,this.addChild(this._mapContainer),this._groundContainer=new e.Container,this._mapContainer.addChild(this._groundContainer),this._objContainer=new e.Container,this._mapContainer.addChild(this._objContainer);var t,i,n,o,r=this.mapData.groundMapData,a=this.mapData.objectsMapData,s=this.mapData.initialControllableLocation;for(this._mapSizeR=r.length,this._mapSizeC=r[0].length,this.mapData.singleGroundImage&&(t=new e.Sprite(e.Texture.from(this.mapData.singleGroundImage.path)),this._groundContainer.addChild(t),t.scale.set(this.mapData.singleGroundImage.scale||1)),this._tileArray=[],this._objArray=[],i=0;i=0;n--)this._tileArray[i][n]=null,r[i][n]&&"0"!==r[i][n]?((o=new y(this,r[i][n])).position.x=this.getTilePosXFor(i,n),o.position.y=this.getTilePosYFor(i,n),o.mapPos={c:n,r:i},this._tileArray[i][n]=o,this._groundContainer.addChild(o),o.isMovableTo||this._pathFinding.setCell(n,i,0)):this._pathFinding.setCell(n,i,0);var h,l=!1;for(i=0;i=0;n--)this._objArray[i][n]=null,a[i][n]&&"0"!==a[i][n]&&((h=new v(this,a[i][n])).position.x=this.getTilePosXFor(i,n),h.position.y=this.getTilePosYFor(i,n)+this.tileHalfHeight,h.mapPos={c:n,r:i},!l&&h.isFloorObject&&(l=!0),this._objContainer.addChild(h),this.addObjRefToLocation(h,h.mapPos),s&&s.columnIndex===n&&s.rowIndex===i&&(this._currentControllable=h));if(l){var c=void 0,g=void 0;for(i=0;i=0;n--)if(c=this._objArray[i][n])for(g=0;g>1)-this.getTilePosXFor(e,t)*this._currentScale,o=this._externalCenter.y-this.getTilePosYFor(e,t)*this._currentScale;this.centralizeToPoint(n,o,i)},i.prototype.centralizeToCurrentFocusLocation=function(t){this.centralizeToLocation(this._currentFocusLocation.c,this._currentFocusLocation.r,t)},i.prototype.centralizeToCurrentExternalCenter=function(t){this._externalCenter&&(this._currentFocusLocation={c:this._mapSizeC>>1,r:this._mapSizeR>>1},this.centralizeToPoint(this._externalCenter.x,this._externalCenter.y,t))},i.prototype.centralizeToPoint=function(t,e,i){this._tileArray&&(t-=this._mapVisualWidthScaled>>1,r(i)&&i||!r(i)&&this._config.instantCameraRelocation?(this._mapContainer.position.x=t,this._mapContainer.position.y=e):this.moveEngine.addTween(this._mapContainer.position,.5,{x:t,y:e},0,"easeInOut",!0))},i.prototype.setZoomParameters=function(t,e,i,n,o){void 0===t&&(t=.5),void 0===e&&(e=1.5),void 0===i&&(i=5),void 0===n&&(n=0),void 0===o&&(o=!1),this._config.minScale=t,this._config.maxScale=e,this._config.minZoom=-1,this._config.maxZoom=1,this._config.zoomIncrement=r(i)?i<=1?0:2/(i-1):.5,this._config.initialZoomLevel=n,this._config.instantCameraZoom=o},i.prototype.setScale=function(t,e){tthis._config.maxScale&&(t=this._config.maxScale),this._currentScale=t,this._mapVisualWidthScaled=this._mapVisualWidthReal*this._currentScale,r(e)&&e||!r(e)&&this._config.instantCameraZoom?this._mapContainer.scale.set(this._currentScale):this.moveEngine.addTween(this._mapContainer.scale,.5,{x:this._currentScale,y:this._currentScale},0,"easeInOut",!0)},i.prototype.zoomTo=function(t,e){var i=a(t=t||0,this._config.minZoom,this._config.maxZoom,this._config.minScale,this._config.maxScale,!0);i=Math.round(10*i)/10,this._currentZoom=a(i,this._config.minScale,this._config.maxScale,this._config.minZoom,this._config.maxZoom,!0),this._externalCenter=this._externalCenter?this._externalCenter:{x:this._mapVisualWidthScaled>>1,y:0};var n=this._mapContainer.position.x+(this._mapVisualWidthScaled>>1)-this._externalCenter.x,o=this._mapContainer.position.y-this._externalCenter.y,s=this._currentScale;this.setScale(i,e);var h=this._currentScale/s;this.centralizeToPoint(this._externalCenter.x+n*h,this._externalCenter.y+o*h,r(e)&&e||!r(e)&&this._config.instantCameraZoom)},i.prototype.zoomOut=function(t){this.zoomTo(this._currentZoom-this._config.zoomIncrement,t)},i.prototype.zoomIn=function(t){this.zoomTo(this._currentZoom+this._config.zoomIncrement,t)},i.prototype.getCurrentControllable=function(){return this._currentControllable},i.prototype.setCurrentControllable=function(t){this._currentControllable=t},i.prototype.addObjRefToLocation=function(t,e){var i,n;for(i=e.c;ie.r-t.rowSpan;n--)this.addObjRefToSingleLocation(t,{c:i,r:n})},i.prototype.addObjRefToSingleLocation=function(t,e){this._objArray[e.r][e.c]||(this._objArray[e.r][e.c]=[]),this._objArray[e.r][e.c].indexOf(t)<0&&this._objArray[e.r][e.c].push(t),t.isMovableTo||this._pathFinding.setDynamicCell(e.c,e.r,0)},i.prototype.removeObjRefFromLocation=function(t,e){var i,n;for(i=e.c;ie.r-t.rowSpan;n--)this.removeObjRefFromSingleLocation(t,{c:i,r:n})},i.prototype.removeObjRefFromSingleLocation=function(t,e){if(this._objArray[e.r][e.c]){var i=this._objArray[e.r][e.c].indexOf(t);if(i>-1&&this._objArray[e.r][e.c].splice(i,1),0===this._objArray[e.r][e.c].length)this._pathFinding.setDynamicCell(e.c,e.r,1),this._objArray[e.r][e.c]=null;else for(var n=this._objArray[e.r][e.c],o=n.length,r=0;r0&&this.changeObjAlphasInLocation(1,{c:e.c-1,r:e.r}),e.c>0&&e.r0&&this.changeObjAlphasInLocation(.7,{c:i.c-1,r:i.r}),i.c>0&&i.r=0;n--)if(e=this._objArray[i][n])for(o=0;oo&&(a=n===r?c.NW:nt.currentPathStep;(this.moveEngine.removeMovable(t),e?t.changeVisualToDirection(t.currentDirection,!1):this._config.checkPathOnEachTile?this.checkAndMoveObjectToLocation(t,t.currentPath[0].mapPos):(t.currentPath.splice(t.currentPath.length-1,1),this.moveObjThrough(t,t.currentPath)),this._currentControllable===t)&&this._tileArray[t.mapPos.r][t.mapPos.c].setHighlighted(!1,!this._config.tileHighlightAnimated);e&&this._config.objectReachedDestinationCallback&&this._config.objectReachedDestinationCallback(t)},i.prototype.checkForFollowCharacter=function(t){if(this._config.followCharacter&&this._currentControllable===t){this._currentFocusLocation={c:t.mapPos.c,r:t.mapPos.r};var e=this._externalCenter.x-t.position.x*this._currentScale,i=this._externalCenter.y-t.position.y*this._currentScale;this.moveEngine.addTween(this._mapContainer.position,.1,{x:e,y:i},0,"easeOut",!0)}},i.prototype.checkForTileChange=function(t){this._config.objectUpdateCallback&&this._config.objectUpdateCallback(t);for(var e={x:t.position.x,y:t.position.y-this.tileHalfHeight},i=this._tileArray[t.currentTargetTile.mapPos.r][t.currentTargetTile.mapPos.c],n=[],o=0;o1&&this._config.otherObjectsOnTheNextTileCallback&&this._config.otherObjectsOnTheNextTileCallback(t,r)}},i.prototype.getPath=function(t,e){if(this._pathFinding)return this._pathFinding.solve(t.c,t.r,e.c,e.r);throw new Error("Path finding hasn't been initialized yet!")},i.prototype.checkAndMoveObjectToTile=function(t,e,i){return void 0===i&&(i=null),!!e.isMovableTo&&this.checkAndMoveObjectToLocation(t,e.mapPos,i)},i.prototype.checkAndMoveObjectToLocation=function(t,e,i){void 0===i&&(i=null);var n=this.getPath(t.mapPos,e);return!!n&&(this.moveObjThrough(t,n,i),n.length>0)},i.prototype.moveCurrentControllableToLocation=function(t,e){if(void 0===e&&(e=null),!this._currentControllable)throw new Error("TRAVISO: _currentControllable is not defined!");return this.checkAndMoveObjectToLocation(this._currentControllable,t,e)},i.prototype.moveCurrentControllableToObj=function(t,e){if(void 0===e&&(e=null),!this._currentControllable)throw new Error("TRAVISO: _currentControllable is not defined!");if(t.currentInteractionOffset){var i={c:t.mapPos.c+t.currentInteractionOffset.c,r:t.mapPos.r+t.currentInteractionOffset.r};if(this.checkAndMoveObjectToLocation(this._currentControllable,i,e))return!0}for(var n,o,r,a,s=this._pathFinding.getAdjacentOpenCells(t.mapPos.c,t.mapPos.r,t.columnSpan,t.rowSpan),h=3e3,l=0;lthis._posFrame.x+this._posFrame.w||t.y>this._posFrame.y+this._posFrame.h)},i.prototype.onMouseDown=function(t){var e=t.data.global;!this._dragging&&this.isInteractionInMask(e)&&(this._dragging=!0,this._dragInitStartingX=this._dragPrevStartingX=e.x,this._dragInitStartingY=this._dragPrevStartingY=e.y)},i.prototype.onMouseMove=function(t){if(this._dragging&&this._config.mapDraggable){var e=t.data.global;this._mapContainer.position.x+=e.x-this._dragPrevStartingX,this._mapContainer.position.y+=e.y-this._dragPrevStartingY,this._dragPrevStartingX=e.x,this._dragPrevStartingY=e.y}},i.prototype.onMouseUp=function(t){if(this._dragging){this._dragging=!1;var e=t.data.global.x-this._dragInitStartingX,i=t.data.global.y-this._dragInitStartingY;Math.abs(e)<5&&Math.abs(i)<5&&this.checkForTileClick(t.data)}},i.prototype.repositionContent=function(t){void 0===t&&(t=null),f("EngineView repositionContent"),t=t||this._posFrame||{x:0,y:0,w:800,h:600},this.position.x=t.x,this.position.y=t.y,this._externalCenter={x:t.w>>1,y:t.h>>1},this.centralizeToCurrentFocusLocation(!0),this._bg&&(this._bg.clear(),this._bg.beginFill(this._config.backgroundColor,1),this._bg.drawRect(0,0,t.w,t.h),this._bg.endFill()),this._mapMask&&this._mapContainer&&(this._mapMask.clear(),this._mapMask.beginFill(0),this._mapMask.drawRect(0,0,t.w,t.h),this._mapMask.endFill(),this._mapContainer.mask=this._mapMask),this._posFrame=t},i.prototype.destroy=function(){var t,e,i,n;for(f("EngineView destroy"),this.disableInteraction(),this.moveEngine.destroy(),this.moveEngine=null,e=0;e=0;i--){if((t=this._tileArray[e][i])&&t.destroy(),this._tileArray[e][i]=null,t=this._objArray[e][i])for(n=0;n-1){var e=["\n %c %c %c Traviso.js - ".concat(M," %c %c http://www.travisojs.com/ %c \n\n"),"background: #18bc9c; padding:5px 0;","background: #18bc9c; padding:5px 0;","color: #18bc9c; background: #030307; padding:5px 0;","background: #18bc9c; padding:5px 0;","background: #5ad2ba; padding:5px 0;","background: #18bc9c; padding:5px 0;"];(t=self.console).log.apply(t,e)}else self.console&&self.console.log("Traviso.js ".concat(M," - http://www.travisojs.com/"));F=!0}}(),f("Traviso initiated. (Version: 0.1.5)"))};return t.DIRECTIONS=c,t.EngineView=x,t.ObjectView=v,t.PF_ALGORITHMS=p,t.TileView=y,t.VERSION=k,t.dotProduct=function(t,e){return t.x*e.x+t.y*e.y},t.enableDisableLogging=d,t.existy=r,t.getDist=l,t.getEngineInstance=function(t,e){return void 0===e&&(e=null),L(e),new x(t)},t.getUnit=s,t.isInPolygon=h,t.mathMap=a,t.skipHello=function(){F=!0},t.trace=f,Object.defineProperty(t,"__esModule",{value:!0}),t}({},PIXI); //# sourceMappingURL=traviso.min.js.map diff --git a/examples/js/traviso.min.js.map b/examples/js/traviso.min.js.map index 4565ff4..35f577d 100644 --- a/examples/js/traviso.min.js.map +++ b/examples/js/traviso.min.js.map @@ -1 +1 @@ -{"version":3,"file":"traviso.min.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/utils/calculations.ts","../../src/utils/constants.ts","../../src/utils/trace.ts","../../src/utils/map.ts","../../src/map/ObjectView.ts","../../src/map/TileView.ts","../../src/utils/easing.ts","../../src/map/MoveEngine.ts","../../src/pathFinding/GridNode.ts","../../src/pathFinding/BinaryHeap.ts","../../src/pathFinding/PathFinding.ts","../../src/map/EngineView.ts","../../src/utils/hello.ts","../../src/version.ts","../../src/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { DisplayObject } from 'pixi.js';\nimport { TPositionPair } from './map';\n\n/**\n * Checks if the value existy.\n *\n * @memberof TRAVISO\n * @for TRAVISO\n *\n * @method\n * @function\n * @public\n * @static\n *\n * @param value {unknown} value to check\n * @return {boolean} if the value existy or not\n */\nexport const existy = (value: unknown): boolean => {\n return value !== null && value !== undefined;\n};\n\n/**\n * Linear maps a given number in a source range to a target range\n *\n * @memberof TRAVISO\n * @for TRAVISO\n *\n * @method\n * @function\n * @public\n * @static\n *\n * @param v {number} value to map\n * @param min1 {number} minimum value of the source range\n * @param max1 {number} maximum value of the source range\n * @param min2 {number} minimum value of the target range\n * @param max2 {number} maximum value of the target range\n * @param noOutliers {boolean} If the outlier values won't be processed, default false\n * @return {number} mapped value according to target range\n */\nexport const mathMap = (\n v: number,\n min1: number,\n max1: number,\n min2: number,\n max2: number,\n noOutliers: boolean = false\n): number => {\n if (noOutliers) {\n if (v < min1) {\n return min2;\n } else if (v > max1) {\n return max2;\n }\n }\n return min2 + ((max2 - min2) * (v - min1)) / (max1 - min1);\n};\n\n/**\n * Produces dot product of two vectors.\n *\n * @memberof TRAVISO\n * @for TRAVISO\n *\n * @method\n * @function\n * @public\n * @static\n *\n * @param v1 {TPositionPair} first vector\n * @param v2 {TPositionPair} second vector\n * @return {number} dot product of two vectors\n */\nexport const dotProduct = (v1: TPositionPair, v2: TPositionPair): number => {\n return v1.x * v2.x + v1.y * v2.y;\n};\n\n/**\n * Produces unit vector of a given vector.\n *\n * @memberof TRAVISO\n * @for TRAVISO\n *\n * @method\n * @function\n * @public\n * @static\n *\n * @param v {TPositionPair} source vector\n * @return {TPositionPair} unit vector\n */\nexport const getUnit = (v: TPositionPair): TPositionPair => {\n const m = Math.sqrt(v.x * v.x + v.y * v.y);\n return { x: v.x / m, y: v.y / m };\n};\n\n/**\n * Checks if the given point is the polygon defined by the vertices.\n *\n * @memberof TRAVISO\n * @for TRAVISO\n *\n * @method\n * @function\n * @public\n * @static\n *\n * @param gp {TPositionPair} point to check\n * @param vertices {Array(Array(Number))} array containing the vertices of the polygon\n * @return {boolean} if the point is inside the polygon\n */\nexport const isInPolygon = (gp: TPositionPair, vertices: number[][]): boolean => {\n const testY = gp.y;\n const testX = gp.x;\n const nVert = vertices.length;\n let i,\n j,\n c = false;\n for (i = 0, j = nVert - 1; i < nVert; j = i++) {\n if (\n vertices[i][1] > testY !== vertices[j][1] > testY &&\n testX <\n ((vertices[j][0] - vertices[i][0]) * (testY - vertices[i][1])) / (vertices[j][1] - vertices[i][1]) +\n vertices[i][0]\n ) {\n c = !c;\n }\n }\n return c;\n};\n\n/**\n * Calculates the distance between two points.\n *\n * @memberof TRAVISO\n * @for TRAVISO\n *\n * @method\n * @function\n * @public\n * @static\n *\n * @param p1 {TPositionPair} first point\n * @param p2 {TPositionPair} second point\n * @return {number} the distance between two points\n */\nexport const getDist = (p1: TPositionPair, p2: TPositionPair): number => {\n return Math.sqrt((p2.x - p1.x) * (p2.x - p1.x) + (p2.y - p1.y) * (p2.y - p1.y));\n};\n\n/**\n * Calculates the global point with respect to given local point and scope.\n *\n * @method\n * @function\n * @private\n * @internal\n * @static\n *\n * @param lp {TPositionPair} local point\n * @param scope {PIXI.DisplayObject} local scope\n * @return {TPositionPair} global point\n */\nexport const localToGlobal = (lp: TPositionPair, scope: DisplayObject): TPositionPair => {\n let sX = scope.position.x + lp.x;\n let sY = scope.position.y + lp.y;\n\n let p = scope.parent;\n while (p) {\n sX += p.position.x;\n sY += p.position.y;\n p = p.parent;\n }\n\n return {\n x: sX,\n y: sY,\n };\n};\n\n/**\n * Calculates the local point with respect to given global point and local scope.\n *\n * @method\n * @function\n * @private\n * @internal\n * @static\n *\n * @param gp {TPositionPair} global point\n * @param scope {PIXI.DisplayObject} local scope\n * @return {TPositionPair} local point\n */\nexport const globalToLocal = (gp: TPositionPair, scope: DisplayObject): TPositionPair => {\n let sX = scope.position.x;\n let sY = scope.position.y;\n\n let p = scope.parent;\n while (p) {\n sX += p.position.x;\n sY += p.position.y;\n p = p.parent;\n }\n\n return {\n x: gp.x - sX,\n y: gp.y - sY,\n };\n};\n","import { ObjectVisualKey } from './map';\n\nexport type TDirection = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;\n/** Type declaration for reserved direction IDs */\nexport type TDirections = {\n /** idle, no direction */\n readonly O: 0;\n /** south */\n readonly S: 1;\n /** south-west */\n readonly SW: 2;\n /** west */\n readonly W: 3;\n /** north-west */\n readonly NW: 4;\n /** north */\n readonly N: 5;\n /** north-east */\n readonly NE: 6;\n /** east */\n readonly E: 7;\n /** south-east */\n readonly SE: 8;\n};\n\n// export type Traviso = {\n// DIRECTIONS: TDirections,\n\n// }\n\n/**\n * The direction IDs to be used in the engine\n *\n * @memberof TRAVISO\n * @for TRAVISO\n *\n * @property\n * @static\n * @public\n * @constant\n */\nexport const DIRECTIONS: Readonly = {\n O: 0,\n S: 1,\n SW: 2,\n W: 3,\n NW: 4,\n N: 5,\n NE: 6,\n E: 7,\n SE: 8,\n};\n\nexport type TReservedTextureIDs = ObjectVisualKey[];\n/**\n * Texture IDs reserved for internal use\n *\n * @static\n * @private\n * @constant\n * @property\n * @internal\n */\nexport const RESERVED_TEXTURE_IDS: Readonly = [\n 'idle',\n 'idle_s',\n 'idle_sw',\n 'idle_w',\n 'idle_nw',\n 'idle_n',\n 'idle_ne',\n 'idle_e',\n 'idle_se',\n 'move_s',\n 'move_sw',\n 'move_w',\n 'move_nw',\n 'move_n',\n 'move_ne',\n 'move_e',\n 'move_se',\n];\n\n/** Type declaration for the IDs of available path finding algorithms */\nexport type TPathFindingAlgorithmID = 0 | 1;\n/** Type declaration for available path finding algorithms */\nexport type TPathFindingAlgorithms = {\n readonly ASTAR_ORTHOGONAL: TPathFindingAlgorithmID;\n readonly ASTAR_DIAGONAL: TPathFindingAlgorithmID;\n};\n/**\n * The types of available path finding algorithms\n *\n * @memberof TRAVISO\n * @for TRAVISO\n *\n * @property\n * @static\n * @public\n * @constant\n */\nexport const PF_ALGORITHMS: Readonly = {\n ASTAR_ORTHOGONAL: 0,\n ASTAR_DIAGONAL: 1,\n};\n\nexport const KEY_EMPTY_TILE: string = '0';\nexport const KEY_NO_OBJECTS: string = '0';\n","let logEnabled: boolean = true;\n\n/**\n * Writes logs to the browser console\n *\n * @memberof TRAVISO\n * @for TRAVISO\n *\n * @method\n * @function\n * @public\n * @static\n *\n * @param s {string} text to log\n */\nexport function trace(s: string): void {\n if (logEnabled) {\n // eslint-disable-next-line no-console\n self.console.log('TRAVISO: ' + s);\n }\n}\n\n/**\n * Determines if TRAVISO can log helper text.\n *\n * @memberof TRAVISO\n * @for TRAVISO\n *\n * @method\n * @function\n * @public\n * @static\n *\n * @param enabled {boolean} enable logging or not, default `true`\n * @return {boolean} logging enabled or not\n */\nexport function enableDisableLogging(enabled: boolean = true): boolean {\n return (logEnabled = enabled);\n}\n","import { Texture } from 'pixi.js';\nimport { EngineView } from '../map/EngineView';\nimport { TDirection, DIRECTIONS, RESERVED_TEXTURE_IDS } from './constants';\nimport { trace } from './trace';\n\nexport type ObjectVisualKey =\n | 'idle'\n | 'idle_s'\n | 'idle_sw'\n | 'idle_w'\n | 'idle_nw'\n | 'idle_n'\n | 'idle_ne'\n | 'idle_e'\n | 'idle_se'\n | 'move_s'\n | 'move_sw'\n | 'move_w'\n | 'move_nw'\n | 'move_n'\n | 'move_ne'\n | 'move_e'\n | 'move_se'\n | string;\n/** Type declaration for column-row pair objects */\nexport type TColumnRowPair = {\n /** column index of the column-row pair */\n c: number;\n /** row index of the column-row pair */\n r: number;\n};\n/** Type declaration for x-y position pair objects */\nexport type TPositionPair = {\n /** x position of the pair */\n x: number;\n /** y position of the pair */\n y: number;\n};\nexport type ObjectInfoTextures = { [key in ObjectVisualKey]: Texture[] };\nexport type ObjectInfoTextureNames = { [key in ObjectVisualKey]: string[] };\nexport type ObjectInfoInteractionOffsets = {\n [key in ObjectVisualKey]: TColumnRowPair;\n};\n\nexport type TTileInfo = {\n m: boolean;\n t: Texture[];\n};\n\nexport type MapDataObjectVisualFrame = { path: string };\n\nexport type MapDataObjectVisual = {\n frames: MapDataObjectVisualFrame[];\n path: string;\n extension: string;\n numberOfFrames: number;\n startIndex: number;\n ipoc: number;\n ipor: number;\n};\n\nexport type MapDataObjectVisuals = {\n [key in ObjectVisualKey]: MapDataObjectVisual;\n};\n\nexport type MapDataTile = { movable: boolean; path: string };\nexport type MapDataTiles = {\n [key: string]: MapDataTile;\n};\n\nexport interface IObjectInfo {\n m: boolean;\n i: boolean;\n nt: boolean;\n f: boolean;\n s: unknown; // TODO: This is probably not being used any more\n t: ObjectInfoTextures;\n /** Interaction offsets for each visual defined for the object */\n io: ObjectInfoInteractionOffsets;\n rowSpan: number;\n columnSpan: number;\n}\nexport interface IMapDataObject extends IObjectInfo {\n movable: boolean;\n interactive: boolean;\n noTransparency: boolean;\n floor: boolean;\n visuals: MapDataObjectVisuals;\n // added by engine\n id: string;\n textureNames: ObjectInfoTextureNames;\n}\nexport type TMapDataObjects = {\n [key: string]: IMapDataObject;\n};\n\n/** Type declaration for processed map data */\nexport type TMapData = {\n tiles: MapDataTiles;\n objects: TMapDataObjects;\n initialControllableLocation: {\n columnIndex: number;\n rowIndex: number;\n controllableId: string;\n };\n tileHighlightImage: {\n path: string;\n };\n singleGroundImage: {\n path: string;\n scale: number;\n };\n groundMap: Array<{ row: string }>;\n objectsMap: Array<{ row: string }>;\n // added by engine\n groundMapData: string[][];\n objectsMapData: string[][];\n};\n\n/**\n * Returns an object with all properties of a map-object defined by object-type\n *\n * @method\n * @function\n * @private\n * @static\n *\n * @param engine {EngineView} engine instance\n * @param objectType {string} type/id of the related object tag defined in the json file\n * @return {IObjectInfo} an object with certain properties of a map-object\n */\nexport const getObjectInfo = (engine: EngineView, objectType: string): IObjectInfo => {\n const objInfo: IMapDataObject = engine.mapData.objects[objectType];\n if (objInfo) {\n const textures: ObjectInfoTextures = {};\n for (const key in objInfo.textureNames) {\n if (Object.prototype.hasOwnProperty.call(objInfo.textureNames, key)) {\n textures[key] = getObjectTextures(engine, objectType, key);\n }\n }\n return {\n m: objInfo.m,\n i: objInfo.i,\n f: objInfo.f,\n nt: objInfo.nt,\n t: textures,\n io: objInfo.io,\n s: objInfo.s,\n rowSpan: objInfo.rowSpan,\n columnSpan: objInfo.columnSpan,\n };\n }\n\n throw new Error('TRAVISO: No info defined for object type: ' + objectType);\n};\n/**\n * Returns an array of textures {PIXI.Texture} belong to a map-object defined by object-type and sprite-id\n *\n * @function getObjectTextures\n * @memberof TRAVISO\n * @static\n * @private\n * @param engine {EngineView} engine instance\n * @param objectType {string} type/id of the related object tag defined in the json file\n * @param visualId {string} id of the related v tag defined in the json file\n * @return {Array(PIXI.Texture)} an array of textures\n */\nexport const getObjectTextures = (engine: EngineView, objectType: string, visualId: ObjectVisualKey): Texture[] => {\n const objInfo: IMapDataObject = engine.mapData.objects[objectType];\n if (objInfo) {\n let textures = null;\n const textureNames = objInfo.textureNames[visualId];\n if (textureNames && textureNames.length > 0) {\n textures = [];\n for (let j = 0; j < textureNames.length; j++) {\n textures[textures.length] = Texture.from(textureNames[j]);\n }\n } else {\n trace('No textures defined for object type: ' + objectType + ' and visualId: ' + visualId);\n }\n return textures;\n }\n\n throw new Error('TRAVISO: No info defined for object type: ' + objectType);\n};\n\n/**\n * Returns an object with all properties of a map-tile defined by tileType\n *\n * @method\n * @function\n * @static\n *\n * @param engine {EngineView} engine instance\n * @param tileType {string} type/id of the related tile tag defined in the json file\n * @return {TTileInfo} an information object with certain properties (movability and textures) of a map-tile\n */\nexport const getTileInfo = (engine: EngineView, tileType: string): TTileInfo => {\n const tileInfo = engine.mapData.tiles[tileType];\n if (tileInfo) {\n return {\n // m : tileInfo.m,\n m: tileInfo.movable,\n t: tileInfo.path ? [Texture.from(tileInfo.path)] : [],\n };\n } else if (engine.mapData.singleGroundImage) {\n return {\n m: parseInt(tileType) > 0,\n t: [],\n };\n } else {\n throw new Error('TRAVISO: No info defined for tile type: ' + tileType);\n }\n};\n\n/**\n * Returns the predefined moving texture id for the given direction\n *\n * @method\n * @function\n * @static\n *\n * @param dir {TDirection} index of the direction\n * @return {ObjectVisualKey} texture id for the given direction\n */\nexport const getMovingDirVisualId = (dir: TDirection): ObjectVisualKey => {\n return RESERVED_TEXTURE_IDS[dir + 8];\n};\n\n/**\n * Returns the predefined stationary texture id for the given direction\n *\n * @method\n * @function\n * @static\n *\n * @param dir {TDirection} index of the direction\n * @return {ObjectVisualKey} texture id for the given direction\n */\nexport const getStationaryDirVisualId = (dir: TDirection): ObjectVisualKey => {\n return RESERVED_TEXTURE_IDS[dir];\n};\n\n/**\n * Returns the direction (id) between two locations\n *\n * @function getDirBetween\n * @memberof TRAVISO\n * @static\n * @private\n * @param r1 {number} row index of the first location\n * @param c1 {number} column index of the first location\n * @param r2 {number} row index of the second location\n * @param c2 {number} column index of the second location\n * @return {TDirection} direction id\n */\nexport const getDirBetween = (r1: number, c1: number, r2: number, c2: number): TDirection => {\n let dir: TDirection = DIRECTIONS.S;\n if (r1 === r2) {\n if (c1 === c2) {\n dir = DIRECTIONS.O;\n } else if (c1 < c2) {\n dir = DIRECTIONS.NE;\n } else {\n dir = DIRECTIONS.SW;\n }\n } else if (r1 < r2) {\n if (c1 === c2) {\n dir = DIRECTIONS.SE;\n } else if (c1 < c2) {\n dir = DIRECTIONS.E;\n } else {\n dir = DIRECTIONS.S;\n }\n } else if (r1 > r2) {\n if (c1 === c2) {\n dir = DIRECTIONS.NW;\n } else if (c1 < c2) {\n dir = DIRECTIONS.N;\n } else {\n dir = DIRECTIONS.W;\n }\n }\n return dir;\n};\n","import { Container, AnimatedSprite } from 'pixi.js';\nimport { EngineView } from './EngineView';\nimport { existy } from '../utils/calculations';\nimport { TDirection, DIRECTIONS } from '../utils/constants';\nimport {\n TColumnRowPair,\n ObjectInfoInteractionOffsets,\n ObjectInfoTextures,\n ObjectVisualKey,\n getMovingDirVisualId,\n getObjectInfo,\n getStationaryDirVisualId,\n IObjectInfo,\n} from '../utils/map';\n\n/**\n * Visual class for the map-objects.\n *\n * @class ObjectView\n * @extends PIXI.Container\n */\nexport class ObjectView extends Container {\n /**\n * A reference to the engine view that the map-object sits in.\n * @property {EngineView} engine\n * @private\n * @internal\n */\n private _engine: EngineView;\n /**\n * Type-id of the map-object as defined in the json file.\n * @property\n * @public\n */\n private type: string;\n /**\n * Defines if the map-object is movable onto by other map-objects.\n * @property\n * @public\n */\n public isMovableTo: boolean;\n /**\n * Defines if the map-object is interactive/selectable.\n * @property\n * @public\n */\n public isInteractive: boolean;\n /**\n * Number of tiles that map-object covers horizontally on the isometric map\n * @property\n * @public\n */\n public columnSpan: number;\n /**\n * Number of tiles that map-object covers vertically on the isometric map\n * @property\n * @public\n */\n public rowSpan: number;\n\n /**\n * A dictionary for all the textures defined for the map-object.\n * @property\n * @private\n */\n private _textures: ObjectInfoTextures;\n\n /**\n * A dictionary for interaction offset points for each visual if defined in the map data file.\n * @property\n * @private\n */\n private _interactionOffsets: ObjectInfoInteractionOffsets;\n\n /**\n * If true doesn't allow transparency change on this object\n * @property\n * @public\n */\n public noTransparency: boolean;\n /**\n * Defines if the object is a floor object or not\n * @property\n * @public\n */\n public isFloorObject: boolean;\n /**\n * Interaction offset points for the active visual.\n * @property\n * @public\n */\n public currentInteractionOffset: TColumnRowPair;\n /**\n * Current direction of the object.\n * @property\n * @public\n */\n public currentDirection: TDirection;\n\n /**\n * Defines if the map-object is movable onto by other map-objects.\n * @property\n * @private\n * @internal\n */\n private _container: AnimatedSprite;\n /**\n * Position of the object in terms of column and row index.\n * @property\n * @public\n */\n public mapPos: TColumnRowPair;\n\n /**\n * @property\n * @function\n * @private\n * @internal\n */\n private onContainerAnimCompleteCallback: (objectView: ObjectView) => unknown;\n /**\n * @property\n * @function\n * @private\n * @internal\n */\n private onContainerAnimComplete_delayed_binded: () => void;\n /**\n * @property\n * @function\n * @private\n * @internal\n */\n private onContainerAnimComplete_binded: () => void;\n\n /**\n * Visual class constructor for the map-objects.\n *\n * @constructor\n *\n * @param engine {EngineView} the engine instance that the map-object sits in, required\n * @param type {number} type-id of the object as defined in the JSON file\n * @param animSpeed {number} animation speed for the animated visuals, default 0.5\n */\n constructor(engine: EngineView, type: string, animSpeed: number = 0.5) {\n super();\n\n this.onContainerAnimComplete_delayed_binded = this.onContainerAnimComplete_delayed.bind(this);\n this.onContainerAnimComplete_binded = this.onContainerAnimComplete.bind(this);\n\n this._engine = engine;\n this.type = type;\n\n const info: IObjectInfo = getObjectInfo(this._engine, this.type);\n this.isMovableTo = info.m;\n this.isInteractive = info.i;\n this.interactive = this.interactiveChildren = false;\n this.isFloorObject = info.f;\n this.noTransparency = info.nt;\n this.rowSpan = info.rowSpan;\n this.columnSpan = info.columnSpan;\n const xAnchor = this.rowSpan / (this.columnSpan + this.rowSpan);\n this._textures = info.t;\n this._interactionOffsets = info.io;\n this.currentInteractionOffset = this._interactionOffsets.idle;\n\n this._container = new AnimatedSprite(this._textures.idle);\n this._container.interactive = this._container.interactiveChildren = false;\n this._container.anchor.x = xAnchor;\n this._container.anchor.y = 1;\n this.addChild(this._container);\n this.animSpeed = animSpeed;\n this._container.gotoAndStop(0);\n }\n\n /**\n * Animation speed for the animated visuals included in the map-object visuals.\n *\n * @property\n * @default 0.5\n */\n public get animSpeed(): number {\n return this._container.animationSpeed;\n }\n public set animSpeed(value: number) {\n this._container.animationSpeed = existy(value) && value > 0 ? value : 0.5;\n }\n\n /**\n * Changes the map-object's texture(s) according to the specified direction-id and the state of the map-object (moving or stationary).\n *\n * @method\n * @function\n * @public\n *\n * @param direction {TDirection} direction-id as defined in `TRAVISO.DIRECTIONS`\n * @param moving {boolean} if the requested visuals are for moving or stationary state, default `false`\n * @param stopOnFirstFrame {boolean} if true stops on the first frame after changing the visuals, default `false`\n * @param noLoop {boolean} if true the animation will not loop after the first run, default `false`\n * @param onAnimComplete {Function} callback function to call if 'noLoop' is true after the first run of the animation, default `null`\n * @param animSpeed {number} animation speed for the animated visuals, stays the same if not defined, default `null`\n */\n public changeVisualToDirection(\n direction: TDirection,\n moving: boolean = false,\n stopOnFirstFrame: boolean = false,\n noLoop: boolean = false,\n onAnimComplete: (objectView: ObjectView) => unknown = null,\n animSpeed: number = null\n ): void {\n if (\n !this.changeVisual(\n moving ? getMovingDirVisualId(direction) : getStationaryDirVisualId(direction),\n stopOnFirstFrame,\n noLoop,\n onAnimComplete,\n animSpeed\n )\n ) {\n if (!this.changeVisual('idle', stopOnFirstFrame, noLoop, onAnimComplete, animSpeed)) {\n throw new Error(\"no 'idle' visual defined as backup for object type \" + this.type);\n } else {\n this.currentDirection = DIRECTIONS.O;\n }\n } else {\n this.currentDirection = direction;\n }\n }\n\n /**\n * Changes the map-object's texture(s) according to the specified visual-id.\n *\n * @method\n * @function\n * @public\n * @internal\n *\n * @param vId {string} visual-id\n * @param stopOnFirstFrame {boolean} if true stops on the first frame after changing the visuals, default `false`\n * @param noLoop {boolean} if true the animation will not loop after the first run, default `false`\n * @param onAnimComplete {Function} callback function to call if 'noLoop' is true after the first run of the animation, default `null`\n * @param animSpeed {number} animation speed for the animated visuals, stays the same if not defined, default `null`\n * @return {boolean} `true` if the visual-id was valid and the visual has changed without errors\n */\n public changeVisual(\n vId: ObjectVisualKey,\n stopOnFirstFrame: boolean = false,\n noLoop: boolean = false,\n onAnimComplete: (objectView: ObjectView) => unknown = null,\n animSpeed: number = null\n ): boolean {\n if (!this._textures[vId]) {\n // trace(\"!!! No textures defined for vId: \" + vId);\n return false;\n }\n\n this.currentInteractionOffset = this._interactionOffsets[vId];\n\n if (this._container.textures === this._textures[vId] && !noLoop) {\n this._container.loop = !noLoop;\n if (existy(animSpeed) && animSpeed > 0) {\n this.animSpeed = animSpeed;\n }\n return true;\n }\n\n this._container.textures = this._textures[vId];\n\n if (!stopOnFirstFrame && this._textures[vId].length > 1) {\n this._container.loop = !noLoop;\n if (noLoop && onAnimComplete) {\n this.onContainerAnimCompleteCallback = onAnimComplete;\n this._container.onComplete = this.onContainerAnimComplete_binded;\n }\n if (existy(animSpeed) && animSpeed > 0) {\n this.animSpeed = animSpeed;\n }\n this._container.gotoAndPlay(0);\n } else {\n this._container.gotoAndStop(0);\n }\n\n if (this._engine.objectUpdateCallback) {\n this._engine.objectUpdateCallback(this);\n }\n\n return true;\n }\n\n private onContainerAnimComplete(): void {\n setTimeout(this.onContainerAnimComplete_delayed_binded, 100);\n }\n private onContainerAnimComplete_delayed(): void {\n this.onContainerAnimCompleteCallback(this);\n this.onContainerAnimCompleteCallback = null;\n }\n\n /**\n * Clears all references.\n *\n * @method\n * @function\n * @public\n */\n public destroy(): void {\n if (this._container) {\n this._engine = null;\n this._textures = null;\n // this.removeChild(this._container);\n // this._container.textures = null;\n this._container.onComplete = null;\n this._container = null;\n }\n }\n}\n","import { Texture, Container, Graphics, Sprite, AnimatedSprite } from 'pixi.js';\nimport { EngineView } from './EngineView';\nimport { TColumnRowPair, getTileInfo } from '../utils/map';\nimport { ITweenTarget } from './MoveEngine';\n\n/**\n * Visual class for the map-tiles.\n *\n * @class TileView\n * @extends PIXI.Container\n * @constructor\n * @param engine {EngineView} the engine instance that the map-tile sits in\n * @param type {string} type-id of the tile as defined in the JSON file\n */\nexport class TileView extends Container {\n /**\n * A reference to the engine view that the map-tile sits in.\n * @property\n * @private\n * @internal\n */\n private _engine: EngineView;\n /**\n * Type-id of the map-tile as defined in the JSON file.\n * @property\n * @public\n */\n public type: string;\n /**\n * Defines the positions of the vertices of the tile.\n * @property\n * @public\n */\n public vertices: number[][];\n /**\n * Defines if the map-tile is movable onto by map-objects.\n * @property\n * @public\n */\n public isMovableTo: boolean;\n /**\n * @property\n * @private\n * @internal\n */\n private _tileGraphics: AnimatedSprite;\n /**\n * The visual that will be used to highlight the tile.\n * @property\n * @private\n * @internal\n */\n private _highlightedOverlay: Sprite | Graphics;\n /**\n * The highlight state of the map-tile.\n * @property\n * @private\n * @internal\n */\n private _isHighlighted: boolean = false;\n /**\n * Position of the tile in terms of column and row index.\n * @property\n * @public\n */\n public mapPos: TColumnRowPair;\n /**\n * @property\n * @private\n * @internal\n */\n private onHighlightTweenEnd_binded: () => void;\n\n /**\n * Visual class constructor for the map-tiles.\n *\n * @constructor\n *\n * @param engine {EngineView} the engine instance that the map-tile sits in\n * @param type {string} type-id of the tile as defined in the JSON file\n */\n constructor(engine: EngineView, type: string) {\n super();\n\n this.onHighlightTweenEnd_binded = this.onHighlightTweenEnd.bind(this);\n\n this._engine = engine;\n this.type = type;\n\n const halfHeight = this._engine.tileHalfHeight;\n const halfWidth = this._engine.tileHalfWidth;\n\n this.vertices = [\n [-halfWidth, 0],\n [0, -halfHeight],\n [halfWidth, 0],\n [0, halfHeight],\n ];\n\n const tileInfo = getTileInfo(this._engine, this.type);\n this.isMovableTo = tileInfo.m;\n\n if (tileInfo.t.length > 0) {\n this._tileGraphics = new AnimatedSprite(tileInfo.t);\n this._tileGraphics.anchor.x = 0.5;\n this._tileGraphics.anchor.y = 0.5;\n this.addChild(this._tileGraphics);\n this._tileGraphics.gotoAndStop(parseInt(this.type));\n }\n\n // const colorsArray = [0x0106ff, 0x3b6d14, 0x8789ff, 0xb32bf9, 0xeb36d0, 0xfe0000, 0xeb3647, 0xf27e31, 0xffea01, 0x00ff18, 0x3b6d14, 0xfa9bbb, 0xf9c7bc, 0x8d6729, 0x633e07];\n // const c = colorsArray[ this.type < 2 ? this.type : 0 ];\n\n // this._tileGraphics = new PIXI.Graphics();\n // this._tileGraphics.clear();\n // this._tileGraphics.beginFill(c);\n // this._tileGraphics.moveTo(this.vertices[0][0], this.vertices[0][1]);\n // for (let i=1; i < this.vertices.length; i++)\n // {\n // this._tileGraphics.lineTo(this.vertices[i][0], this.vertices[i][1]);\n // };\n // this._tileGraphics.endFill();\n\n if (this._engine.mapData.tileHighlightImage) {\n this._highlightedOverlay = new Sprite(Texture.from(this._engine.mapData.tileHighlightImage.path));\n this._highlightedOverlay.anchor.x = 0.5;\n this._highlightedOverlay.anchor.y = 0.5;\n this.addChild(this._highlightedOverlay);\n } else {\n this._highlightedOverlay = new Graphics();\n this._highlightedOverlay.clear();\n this._highlightedOverlay.lineStyle(\n this._engine.tileHighlightStrokeAlpha <= 0 ? 0 : 2,\n this._engine.tileHighlightStrokeColor,\n this._engine.tileHighlightStrokeAlpha\n );\n this._highlightedOverlay.beginFill(\n this._engine.tileHighlightFillColor,\n this._engine.tileHighlightFillAlpha\n );\n this._highlightedOverlay.moveTo(this.vertices[0][0], this.vertices[0][1]);\n for (let i = 1; i < this.vertices.length; i++) {\n this._highlightedOverlay.lineTo(this.vertices[i][0], this.vertices[i][1]);\n }\n this._highlightedOverlay.lineTo(this.vertices[0][0], this.vertices[0][1]);\n this._highlightedOverlay.endFill();\n this.addChild(this._highlightedOverlay);\n }\n\n this._highlightedOverlay.scale.x = this._highlightedOverlay.scale.y = 0.1;\n this._highlightedOverlay.visible = false;\n }\n\n /**\n * Changes the highlight state of the map-tile.\n *\n * @method\n * @function\n * @public\n *\n * @param isHighlighted {boolean} if the tile is being highlighted or not\n * @param instant {boolean} if the change will be instant or animated, default `false`\n */\n public setHighlighted(isHighlighted: boolean, instant: boolean = false): void {\n if (this._isHighlighted !== isHighlighted) {\n if (instant) {\n this._highlightedOverlay.scale.x = this._highlightedOverlay.scale.y = isHighlighted ? 1 : 0.1;\n this._highlightedOverlay.visible = isHighlighted;\n this._isHighlighted = isHighlighted;\n return;\n }\n\n if (isHighlighted) {\n this._highlightedOverlay.visible = isHighlighted;\n }\n\n this._isHighlighted = isHighlighted;\n\n const ts = isHighlighted ? 1 : 0.1;\n if (this._highlightedOverlay.scale.x === ts) {\n this._highlightedOverlay.visible = isHighlighted;\n } else {\n this._highlightedOverlay.scale.x = this._highlightedOverlay.scale.y = isHighlighted ? 0.1 : 1;\n\n // @formatter:off\n this._engine.moveEngine.addTween(\n this._highlightedOverlay.scale as unknown as ITweenTarget,\n 0.5,\n { x: ts, y: ts },\n 0,\n 'linear',\n true,\n this.onHighlightTweenEnd_binded\n );\n // @formatter:on\n }\n }\n }\n /**\n * @method\n * @function\n * @private\n * @internal\n */\n private onHighlightTweenEnd(): void {\n this._highlightedOverlay.visible = this._isHighlighted;\n }\n\n /**\n * Clears all references.\n *\n * @method\n * @function\n * @public\n */\n public destroy(): void {\n if (this._engine) {\n if (this._engine && this._engine.moveEngine) {\n this._engine.moveEngine.killTweensOf(this._highlightedOverlay.scale as unknown as ITweenTarget);\n }\n this._engine = null;\n this._highlightedOverlay = null;\n this._tileGraphics = null;\n }\n }\n}\n","export type EasingType =\n | 'easeInOut'\n | 'easeInOutQuad'\n | 'Quad.easeInOut'\n | 'easeIn'\n | 'easeInQuad'\n | 'Quad.easeIn'\n | 'easeOut'\n | 'easeOutQuad'\n | 'Quad.easeOut'\n | 'linear';\nexport type EasingFunction = (t: number, b: number, c: number, d: number) => number;\n/**\n * Returns the proper easing method to use depending on the easing id specified.\n *\n * @method getEasingFunc\n * @private\n * @param e {string} the easing id\n * @return {Function} the easing method to use\n */\nexport const getEasingFunc = (e: EasingType): EasingFunction => {\n if (e === 'easeInOut' || e === 'easeInOutQuad' || e === 'Quad.easeInOut') {\n return easeInOutQuad;\n } else if (e === 'easeIn' || e === 'easeInQuad' || e === 'Quad.easeIn') {\n return easeInQuad;\n } else if (e === 'easeOut' || e === 'easeOutQuad' || e === 'Quad.easeOut') {\n return easeOutQuad;\n } else {\n return linearTween;\n }\n};\n\n/**\n * Linear tween calculation.\n *\n * @method linearTween\n * @private\n * @param t {number} current time\n * @param b {number} initial value\n * @param c {number} difference with the target value\n * @param d {number} total time\n * @return {number} result of the calculation\n */\nexport const linearTween = (t: number, b: number, c: number, d: number): number => {\n return (c * t) / d + b;\n};\n/**\n * Quadratic ease-in tween calculation.\n *\n * @method easeInQuad\n * @private\n * @param t {number} current time\n * @param b {number} initial value\n * @param c {number} difference with the target value\n * @param d {number} total time\n * @return {number} result of the calculation\n */\nexport const easeInQuad = (t: number, b: number, c: number, d: number): number => {\n t /= d;\n return c * t * t + b;\n};\n\n/**\n * Quadratic ease-out tween calculation.\n *\n * @method easeOutQuad\n * @private\n * @param t {number} current time\n * @param b {number} initial value\n * @param c {number} difference with the target value\n * @param d {number} total time\n * @return {number} result of the calculation\n */\nexport const easeOutQuad = (t: number, b: number, c: number, d: number): number => {\n t /= d;\n return -c * t * (t - 2) + b;\n};\n/**\n * Quadratic ease-in-out tween calculation.\n *\n * @method easeInOutQuad\n * @private\n * @param t {number} current time\n * @param b {number} initial value\n * @param c {number} difference with the target value\n * @param d {number} total time\n * @return {number} result of the calculation\n */\nexport const easeInOutQuad = (t: number, b: number, c: number, d: number): number => {\n t /= d / 2;\n if (t < 1) {\n return (c / 2) * t * t + b;\n }\n t--;\n return (-c / 2) * (t * (t - 2) - 1) + b;\n};\n","/**\n * @author Hakan Karlidag - @axaq\n */\n\nimport { Ticker } from 'pixi.js';\nimport { trace } from '../utils/trace';\nimport { EngineView } from '../map/EngineView';\nimport { ObjectView } from '../map/ObjectView';\nimport { GridNode } from '../pathFinding/GridNode';\nimport { getDist, getUnit } from '../utils/calculations';\nimport { EasingFunction, EasingType, getEasingFunc } from '../utils/easing';\nimport { TColumnRowPair, TPositionPair } from '../utils/map';\n\nexport interface IMovable extends ObjectView {\n // [key: string]: any,\n speedUnit: TPositionPair;\n speedMagnitude: number;\n currentPath: GridNode[];\n currentPathStep: number;\n currentTarget: TPositionPair;\n currentTargetTile: GridNode;\n currentReachThresh: number;\n prevPosition: TPositionPair;\n}\n\nexport interface ITween {\n target: { [key: string]: unknown };\n duration: number;\n delay: number;\n easingFunc: EasingFunction;\n overwrite: boolean;\n onComplete: () => void;\n totalFrames: number;\n currentFrame: number;\n vars: { [key: string]: { b: number; c: number } };\n}\n\nexport interface ITweenTarget {\n [key: string]: unknown;\n tweens?: ITween[];\n}\n\n/**\n * Holds and manages all the logic for tween animations and map-object movement on the map.\n * This is created and used by EngineView instances.\n *\n * @class MoveEngine\n */\nexport class MoveEngine {\n /**\n * A reference to the engine view that uses this move engine.\n * @property\n * @private\n */\n private _engine: EngineView;\n\n /**\n * The speed value to be used for object movements if not defined specifically.\n * @property\n * @private\n * @default `3`\n */\n private _defaultSpeed: number;\n /**\n * Specifies if the move-engine will process the object movements.\n * @property\n * @private\n * @default `false`\n */\n private _activeForMovables: boolean = false;\n /**\n * Specifies if the move-engine will process the tweens.\n * @property\n * @private\n * @default `false`\n */\n private _activeForTweens: boolean = false;\n /**\n * Specifies if the move-engine will process the tweens and object movements.\n * @property\n * @private\n * @default `true`\n */\n private _processFrame: boolean = true;\n /**\n * The list to store current map-objects in move.\n * @property\n * @private\n * @default `[]`\n */\n private _movables: IMovable[] = [];\n /**\n * The list to store targets for the current tweens.\n * @property\n * @private\n * @default `[]`\n */\n private _tweenTargets: ITweenTarget[] = [];\n /**\n * Used to calculate how many frames a tween will take to process.\n * @property\n * @private\n * @default `60`\n */\n private _fps: number = 60;\n\n private _ticker: Ticker;\n private _processFunc: () => void;\n\n /**\n * Constructor function for MoveEngine.\n *\n * @constructor\n *\n * @param engine {EngineView} the engine instance that the animations will perform on\n * @param defaultSpeed {number} default speed for the map-objects to be used when they move on map, default 3\n */\n constructor(engine: EngineView, defaultSpeed: number = 3) {\n this._engine = engine;\n this._defaultSpeed = defaultSpeed;\n\n this._processFunc = this.run.bind(this);\n this._ticker = new Ticker();\n this._ticker.add(this._processFunc);\n this._ticker.start();\n }\n\n /**\n * Adds a single tween for the given object.\n *\n * @method\n * @function\n * @public\n *\n * @param o {ITweenTarget} the object to add tween animation to\n * @param duration {number} the duration of the tween animation in seconds\n * @param vars {{ [key: string]: number }} the object defining which properties of the target object will be animated\n * @param delay {number} the amount of waiting before the tween animation starts, in seconds, default `0`\n * @param easing {EasingType} type of the easing, default `'linear'`\n * @param overwrite {boolean} if the other tween animations assigned to the same object are going to be killed, default `false`\n * @param onComplete {Function} callback function to be called after the tween animation finished, default `null`\n */\n public addTween(\n o: ITweenTarget,\n duration: number,\n vars: { [key: string]: number },\n delay: number = 0,\n easing: EasingType = 'linear',\n overwrite: boolean = false,\n onComplete: () => void = null\n ): void {\n let v: { [key: string]: { b: number; c: number } } = null;\n for (const prop in vars) {\n if (o[prop] !== vars[prop]) {\n if (!v) {\n v = {};\n }\n v[prop] = { b: o[prop] as number, c: vars[prop] - (o[prop] as number) };\n }\n }\n\n if (v) {\n const t: ITween = {\n target: o,\n duration: duration,\n delay: Number(delay) || 0,\n easingFunc: getEasingFunc(easing),\n overwrite: overwrite || false,\n onComplete: onComplete || null,\n totalFrames: duration * this._fps,\n currentFrame: 0,\n vars: v,\n };\n\n const idx = this._tweenTargets.indexOf(o);\n if (idx >= 0) {\n let tweens: ITween[] = o.tweens;\n if (!tweens) {\n tweens = [];\n }\n if (t.overwrite) {\n for (let i = 0; i < tweens.length; i++) {\n tweens[i] = null;\n }\n tweens = [];\n }\n\n tweens[tweens.length] = t;\n o.tweens = tweens;\n } else {\n o.tweens = [t];\n this._tweenTargets[this._tweenTargets.length] = o;\n }\n\n if (this._tweenTargets.length > 0 && !this._activeForTweens) {\n this._activeForTweens = true;\n }\n }\n }\n\n /**\n * Removes a single tween from the given object.\n *\n * @method\n * @function\n * @public\n *\n * @param o {ITweenTarget} the object to remove the tween animation from\n * @param t {ITween} the tween to be removed from the object\n * @return {boolean} if the tween is found and removed\n */\n public removeTween(o: ITweenTarget, t: ITween): boolean {\n let targetRemoved = false;\n\n if (o && t) {\n const idx = this._tweenTargets.indexOf(o);\n if (idx >= 0) {\n if (this._tweenTargets[idx].tweens && this._tweenTargets[idx].tweens.length > 0) {\n const tweens = this._tweenTargets[idx].tweens;\n const idx2 = tweens.indexOf(t);\n if (idx2 >= 0) {\n t.onComplete = null;\n t.easingFunc = null;\n t.target = null;\n\n tweens.splice(idx2, 1);\n if (tweens.length === 0) {\n this._tweenTargets.splice(idx, 1);\n targetRemoved = true;\n }\n } else {\n throw new Error('No tween defined for this object');\n }\n } else {\n throw new Error('No tween defined for this object');\n }\n } else {\n throw new Error('No tween target defined for this object');\n }\n\n if (this._tweenTargets.length === 0) {\n this._activeForTweens = false;\n }\n }\n\n return targetRemoved;\n }\n\n /**\n * Removes and kills all tweens assigned to the given object.\n *\n * @method\n * @function\n * @public\n *\n * @param o {ITweenTarget} the object to remove the tween animations from\n * @return {boolean} if any tween is found and removed from the object specified\n */\n public killTweensOf(o: ITweenTarget): boolean {\n let targetRemoved = false;\n\n const idx = this._tweenTargets.indexOf(o);\n if (idx >= 0) {\n if (this._tweenTargets[idx].tweens && this._tweenTargets[idx].tweens.length > 0) {\n const tweens = this._tweenTargets[idx].tweens;\n for (let j = 0; j < tweens.length; j++) {\n tweens[j].onComplete = null;\n tweens[j].easingFunc = null;\n tweens[j].target = null;\n tweens[j] = null;\n }\n this._tweenTargets[idx].tweens = null;\n }\n\n this._tweenTargets.splice(idx, 1);\n\n targetRemoved = true;\n }\n\n if (this._tweenTargets.length === 0) {\n this._activeForTweens = false;\n }\n\n return targetRemoved;\n }\n\n /**\n * Removes and kills all the tweens in operation currently.\n *\n * @method\n * @function\n * @private\n */\n private removeAllTweens(): void {\n this._activeForTweens = false;\n\n let tweens, i, j;\n const len = this._tweenTargets.length;\n for (i = 0; i < len; i++) {\n tweens = this._tweenTargets[i].tweens;\n for (j = 0; j < tweens.length; j++) {\n tweens[j].onComplete = null;\n tweens[j].easingFunc = null;\n tweens[j].target = null;\n tweens[j] = null;\n }\n this._tweenTargets[i].tweens = null;\n this._tweenTargets[i] = null;\n }\n\n this._tweenTargets = [];\n }\n\n /**\n * Adds a map-object as movable to the engine.\n *\n * @method\n * @function\n * @public\n *\n * @param o {IMovable} the map-object to add as movable\n */\n public addMovable(o: IMovable): void {\n if (this._movables.indexOf(o) >= 0) {\n return;\n }\n\n this._movables[this._movables.length] = o;\n\n if (this._movables.length > 0 && !this._activeForMovables) {\n this._activeForMovables = true;\n }\n\n // all movables needs to have the following variables:\n // speedMagnitude, speedUnit (more to come...)\n\n // NOTE: might be a good idea to add all necessary parameters to the object here\n }\n\n /**\n * Removes a map-object from the current movables list.\n *\n * @method\n * @function\n * @public\n *\n * @param o {IMovable} the map-object to remove\n * @return {boolean} if the map-object is removed or not\n */\n public removeMovable(o: IMovable): boolean {\n const idx = this._movables.indexOf(o);\n if (idx !== -1) {\n o.speedUnit = { x: 0, y: 0 };\n this._movables.splice(idx, 1);\n }\n if (this._movables.length === 0) {\n this._activeForMovables = false;\n }\n // TODO: might be a good idea to remove/reset all related parameters from the object here\n\n return idx !== -1;\n }\n\n /**\n * Removes all movables.\n *\n * @method\n * @function\n * @private\n */\n private removeAllMovables(): void {\n this._activeForMovables = false;\n\n const len = this._movables.length;\n for (let i = 0; i < len; i++) {\n this._movables[i] = null;\n }\n\n this._movables = [];\n }\n\n /**\n * Changes the current path of a map-object.\n *\n * @method\n * @function\n * @public\n *\n * @param o {IMovable} the map-object to add the path to\n * @param path {Array(GridNode)} the new path\n * @param speed {number} speed of the map-object to be used during movement, if not defined it uses previous speed or the MoveEngine's default speed, default null\n */\n public addNewPathToObject(o: IMovable, path: GridNode[], speed: number): void {\n if (o.currentPath && o.currentTarget) {\n path[path.length] = o.currentPath[o.currentPathStep];\n }\n o.currentPath = path;\n o.currentPathStep = o.currentPath.length - 1;\n o.speedMagnitude = speed || o.speedMagnitude || this._defaultSpeed;\n }\n\n /**\n * Prepares a map-object for movement.\n *\n * @method\n * @function\n * @public\n *\n * @param o {IMovable} the movable map-object\n * @param path {Array(GridNode)} the path for the object\n * @param speed {number} speed of the map-object to be used during movement, if not defined it uses previous speed or the MoveEngine's default speed, default null\n */\n public prepareForMove(o: IMovable, path: GridNode[], speed: number = null): void {\n o.currentPath = path;\n o.currentPathStep = o.currentPath.length - 1;\n o.speedMagnitude = speed || o.speedMagnitude || this._defaultSpeed;\n }\n\n /**\n * Sets movement specific parameters for the map-object according to target location.\n *\n * @method\n * @function\n * @public\n *\n * @param o {IMovable} the movable map-object\n * @param pos {TColumnRowPair} target location\n */\n public setMoveParameters(o: IMovable, pos: TColumnRowPair): void {\n const px = this._engine.getTilePosXFor(pos.r, pos.c);\n const py = this._engine.getTilePosYFor(pos.r, pos.c) + this._engine.tileHalfHeight;\n\n o.speedUnit = getUnit({ x: px - o.position.x, y: py - o.position.y });\n\n o.currentTarget = { x: px, y: py };\n o.currentReachThresh = Math.ceil(\n Math.sqrt(o.speedUnit.x * o.speedUnit.x + o.speedUnit.y * o.speedUnit.y) * o.speedMagnitude\n );\n }\n\n /**\n * Method that precesses a single frame.\n *\n * @method\n * @function\n * @private\n */\n private run(): void {\n // NOTE: Write an alternative with a real time driven animator\n\n if (this._processFrame) {\n let len: number, o: IMovable, i: number;\n if (this._activeForMovables) {\n len = this._movables.length;\n\n let dist;\n for (i = 0; i < len; i++) {\n o = this._movables[i];\n\n // move object\n\n // speed vector (magnitude and direction)\n\n o.prevPosition = { x: o.position.x, y: o.position.y };\n\n // check for target reach\n if (o.currentTarget) {\n dist = getDist(o.position, o.currentTarget);\n if (dist <= o.currentReachThresh) {\n // reached to the target\n o.position.x = o.currentTarget.x;\n o.position.y = o.currentTarget.y;\n\n this._engine.onObjMoveStepEnd(o);\n i--;\n len--;\n continue;\n }\n }\n\n o.position.x += o.speedMagnitude * o.speedUnit.x;\n o.position.y += o.speedMagnitude * o.speedUnit.y;\n\n // check for tile change\n this._engine.checkForTileChange(o);\n this._engine.checkForFollowCharacter(o);\n\n // check for direction change\n }\n\n // will need a different loop to process crashes\n // for (i=0; i < len; i++)\n // {\n // o = this._movables[i];\n // }\n }\n\n if (this._activeForTweens) {\n // and a loop for tween animations\n len = this._tweenTargets.length;\n let t: ITween,\n tt: ITweenTarget,\n tweens: ITween[],\n j: number,\n vars: { [key: string]: { b: number; c: number } };\n for (i = 0; i < len; i++) {\n tt = this._tweenTargets[i];\n tweens = tt.tweens;\n for (j = 0; j < tweens.length; j++) {\n t = tweens[j];\n t.currentFrame++;\n vars = t.vars;\n for (const prop in vars) {\n tt[prop] = t.easingFunc(t.currentFrame, vars[prop].b, vars[prop].c, t.totalFrames);\n }\n\n if (t.currentFrame >= t.totalFrames) {\n if (t.onComplete) {\n t.onComplete();\n }\n if (this.removeTween(tt, t)) {\n i--;\n len--;\n }\n j--;\n }\n }\n }\n }\n }\n }\n\n /**\n * Clears all references and stops all animations and tweens.\n *\n * @method\n * @function\n * @public\n */\n public destroy(): void {\n trace('MoveEngine destroy');\n\n this._processFrame = false;\n\n if (this._ticker) {\n this._ticker.stop();\n }\n\n this.removeAllMovables();\n this.removeAllTweens();\n this._movables = null;\n this._tweenTargets = null;\n this._engine = null;\n this._ticker = null;\n }\n}\n","import { TColumnRowPair } from '../utils/map';\n\nexport class GridNode {\n public x: number;\n public y: number;\n public weight: number;\n public staticWeight: number;\n public mapPos: TColumnRowPair;\n // calculation params\n public closed: boolean;\n public parent: GridNode;\n public visited: boolean;\n public h: number;\n public g: number;\n public f: number;\n\n constructor(c: number, r: number, weight: number) {\n this.x = c;\n this.y = r;\n this.weight = weight;\n this.mapPos = { c, r };\n }\n\n public toString(): string {\n return '[' + String(this.x) + ' ' + String(this.y) + ']';\n }\n public getCost(fromNeighbor: GridNode): number {\n // Take diagonal weight into consideration.\n if (fromNeighbor && fromNeighbor.x !== this.x && fromNeighbor.y !== this.y) {\n return this.weight * 1.41421;\n }\n return this.weight;\n }\n\n public isWall(): boolean {\n return this.weight === 0;\n }\n}\n","export class BinaryHeap {\n private content: unknown[];\n private scoreFunction: (element: unknown) => number;\n\n constructor(scoreFunction: (element: unknown) => number) {\n this.content = [];\n this.scoreFunction = scoreFunction;\n }\n\n public push(element: unknown): void {\n // Add the new element to the end of the array.\n this.content.push(element);\n\n // Allow it to sink down.\n this.sinkDown(this.content.length - 1);\n }\n public pop(): unknown {\n // Store the first element so we can return it later.\n const result = this.content[0];\n // Get the element at the end of the array.\n const end = this.content.pop();\n // If there are any elements left, put the end element at the\n // start, and let it bubble up.\n if (this.content.length > 0) {\n this.content[0] = end;\n this.bubbleUp(0);\n }\n return result;\n }\n\n // private remove(node: unknown) {\n // const i = this.content.indexOf(node);\n\n // // When it is found, the process seen in 'pop' is repeated\n // // to fill up the hole.\n // const end = this.content.pop();\n\n // if (i !== this.content.length - 1) {\n // this.content[i] = end;\n\n // if (this.scoreFunction(end) < this.scoreFunction(node)) {\n // this.sinkDown(i);\n // }\n // else {\n // this.bubbleUp(i);\n // }\n // }\n // }\n public size(): number {\n return this.content.length;\n }\n public rescoreElement(node: unknown): void {\n this.sinkDown(this.content.indexOf(node));\n }\n private sinkDown(n: number): void {\n // Fetch the element that has to be sunk.\n const element = this.content[n];\n\n // When at 0, an element can not sink any further.\n while (n > 0) {\n // Compute the parent element's index, and fetch it.\n const parentN = ((n + 1) >> 1) - 1,\n parent = this.content[parentN];\n // Swap the elements if the parent is greater.\n if (this.scoreFunction(element) < this.scoreFunction(parent)) {\n this.content[parentN] = element;\n this.content[n] = parent;\n // Update 'n' to continue at the new position.\n n = parentN;\n }\n // Found a parent that is less, no need to sink any further.\n else {\n break;\n }\n }\n }\n private bubbleUp(n: number): void {\n // Look up the target element and its score.\n const length = this.content.length,\n element = this.content[n],\n elemScore = this.scoreFunction(element);\n let conditionMet = true;\n while (conditionMet) {\n // Compute the indices of the child elements.\n const child2N = (n + 1) << 1,\n child1N = child2N - 1;\n // This is used to store the new position of the element, if any.\n let swap = null,\n child1Score;\n // If the first child exists (is inside the array)...\n if (child1N < length) {\n // Look it up and compute its score.\n const child1 = this.content[child1N];\n child1Score = this.scoreFunction(child1);\n\n // If the score is less than our element's, we need to swap.\n if (child1Score < elemScore) {\n swap = child1N;\n }\n }\n\n // Do the same checks for the other child.\n if (child2N < length) {\n const child2 = this.content[child2N],\n child2Score = this.scoreFunction(child2);\n if (child2Score < (swap === null ? elemScore : child1Score)) {\n swap = child2N;\n }\n }\n\n // If the element needs to be moved, swap it, and continue.\n if (swap !== null) {\n this.content[n] = this.content[swap];\n this.content[swap] = element;\n n = swap;\n }\n // Otherwise, we are done.\n else {\n conditionMet = false;\n break;\n }\n }\n }\n}\n","import { BinaryHeap } from './BinaryHeap';\nimport { GridNode } from './GridNode';\n\nexport type PathFindingHeuristicFunction = (pos0: GridNode, pos1: GridNode) => number;\nexport type PathFindingSearchOptions = {\n heuristic?: PathFindingHeuristicFunction;\n closest?: boolean;\n};\nexport type PathFindingOptions = {\n diagonal?: boolean;\n closest?: boolean;\n};\n\n// Based on http://github.com/bgrins/javascript-astar v0.4.0\n\n/**\n * Includes all path finding logic.\n *\n * @class PathFinding\n */\nexport class PathFinding {\n /**\n * @property {Array(Array(GridNode))} grid\n * @private\n */\n private grid: GridNode[][];\n /**\n * @property {boolean} diagonal\n * @private\n */\n private diagonal: boolean;\n /**\n * Active heuristic method to use\n * @property\n * @private\n */\n private heuristic: PathFindingHeuristicFunction;\n\n private closest: boolean;\n\n private nodes: GridNode[];\n private dirtyNodes: GridNode[];\n\n /**\n * See list of heuristics: http://theory.stanford.edu/~amitp/GameProgramming/Heuristics.html\n *\n * @property\n * @private\n * @static\n */\n private static readonly HEURISTICS: {\n [key in 'manhattan' | 'diagonal']: PathFindingHeuristicFunction;\n } = {\n manhattan: (pos0: GridNode, pos1: GridNode) => {\n const d1 = Math.abs(pos1.x - pos0.x);\n const d2 = Math.abs(pos1.y - pos0.y);\n return d1 + d2;\n },\n diagonal: (pos0: GridNode, pos1: GridNode) => {\n const D = 1;\n const D2 = Math.sqrt(2);\n const d1 = Math.abs(pos1.x - pos0.x);\n const d2 = Math.abs(pos1.y - pos0.y);\n return D * (d1 + d2) + (D2 - 2 * D) * Math.min(d1, d2);\n },\n };\n /**\n * Constructor function for the PathFinding class.\n *\n * @constructor\n *\n * @param mapSizeC {number} number of columns\n * @param mapSizeR {number} number of rows\n * @param options {PathFindingOptions} settings for the search algorithm, default `{}`\n */\n constructor(mapSizeC: number, mapSizeR: number, options: PathFindingOptions = {}) {\n //define map\n this.nodes = [];\n this.diagonal = !!options.diagonal;\n this.heuristic = this.diagonal ? PathFinding.HEURISTICS.diagonal : PathFinding.HEURISTICS.manhattan;\n this.closest = !!options.closest;\n this.grid = [];\n let c = 0,\n r = 0,\n node: GridNode;\n for (c = 0; c < mapSizeC; c++) {\n this.grid[c] = [];\n for (r = 0; r < mapSizeR; r++) {\n node = new GridNode(c, r, 1);\n this.grid[c][r] = node;\n this.nodes.push(node);\n }\n }\n this.init();\n }\n\n /**\n * Cleans/resets all nodes.\n *\n * @method init\n * @private\n */\n private init(): void {\n this.dirtyNodes = [];\n for (let i = 0; i < this.nodes.length; i++) {\n this.cleanNode(this.nodes[i]);\n }\n }\n\n // /**\n // * Cleans only dirty nodes.\n // *\n // * @method cleanDirty\n // * @private\n // */\n // private cleanDirty(): void {\n // for (let i = 0; i < this.dirtyNodes.length; i++) {\n // this.cleanNode(this.dirtyNodes[i]);\n // }\n // this.dirtyNodes = [];\n // }\n\n /**\n * Marks a node as dirty.\n *\n * @method markDirty\n * @private\n * @param node {TRAVISO.PathFinding.GridNode} node to be marked\n */\n private markDirty(node: GridNode): void {\n this.dirtyNodes.push(node);\n }\n\n /**\n * Finds adjacent/neighboring cells of a single node.\n *\n * @method neighbors\n * @param node {TRAVISO.PathFinding.GridNode} source node\n * @return {Array(TRAVISO.PathFinding.GridNode)} an array of available cells\n */\n private neighbors(node: GridNode): GridNode[] {\n const ret = [],\n x = node.x,\n y = node.y,\n grid = this.grid;\n\n // West\n if (grid[x - 1] && grid[x - 1][y]) {\n ret.push(grid[x - 1][y]);\n }\n // East\n if (grid[x + 1] && grid[x + 1][y]) {\n ret.push(grid[x + 1][y]);\n }\n // South\n if (grid[x] && grid[x][y - 1]) {\n ret.push(grid[x][y - 1]);\n }\n // North\n if (grid[x] && grid[x][y + 1]) {\n ret.push(grid[x][y + 1]);\n }\n\n if (this.diagonal) {\n // Southwest\n if (grid[x - 1] && grid[x - 1][y - 1]) {\n ret.push(grid[x - 1][y - 1]);\n }\n // Southeast\n if (grid[x + 1] && grid[x + 1][y - 1]) {\n ret.push(grid[x + 1][y - 1]);\n }\n // Northwest\n if (grid[x - 1] && grid[x - 1][y + 1]) {\n ret.push(grid[x - 1][y + 1]);\n }\n // Northeast\n if (grid[x + 1] && grid[x + 1][y + 1]) {\n ret.push(grid[x + 1][y + 1]);\n }\n }\n return ret;\n }\n\n public toString(): string {\n const graphString: string[] = [],\n nodes = this.grid; // when using grid\n let rowDebug: number[], row: GridNode[], x: number, len: number, y: number, l: number;\n for (x = 0, len = nodes.length; x < len; x++) {\n rowDebug = [];\n row = nodes[x];\n for (y = 0, l = row.length; y < l; y++) {\n rowDebug.push(row[y].weight);\n }\n graphString.push(rowDebug.join(' '));\n }\n return graphString.join('\\n');\n }\n\n /**\n * Solves path finding for the given source and destination locations.\n *\n * @method solve\n * @private\n * @param originC {number} column index of the source location\n * @param originR {number} row index of the source location\n * @param destC {number} column index of the destination location\n * @param destR {number} row index of the destination location\n * @return {Array(Object)} solution path\n */\n public solve(originC: number, originR: number, destC: number, destR: number): GridNode[] {\n const start = this.grid[originC][originR];\n const end = this.grid[destC][destR];\n const result = this.search(start, end, {\n heuristic: this.heuristic,\n closest: this.closest,\n });\n return result && result.length > 0 ? result : null;\n }\n\n /**\n * Finds available adjacent cells of an area defined by location and size.\n *\n * @method getAdjacentOpenCells\n * @param cellC {number} column index of the location\n * @param cellR {number} row index of the location\n * @param sizeC {number} column size of the area\n * @param sizeR {number} row size of the area\n * @return {Array(Object)} an array of available cells\n */\n public getAdjacentOpenCells(cellC: number, cellR: number, sizeC: number, sizeR: number): GridNode[] {\n let r: number,\n c: number,\n cellArray: GridNode[] = [];\n for (r = cellR; r > cellR - sizeR; r--) {\n for (c = cellC; c < cellC + sizeC; c++) {\n // NOTE: concat is browser dependent. It is fastest for Chrome. Might be a good idea to use for loop or \"a.push.apply(a, b);\" for other browsers\n cellArray = cellArray.concat(this.neighbors(this.grid[c][r]));\n }\n }\n return cellArray;\n }\n\n private pathTo(node: GridNode): GridNode[] {\n let curr = node;\n const path: GridNode[] = [];\n while (curr.parent) {\n path.push(curr);\n curr = curr.parent;\n }\n // return path.reverse();\n return path;\n }\n\n private getHeap(): BinaryHeap {\n return new BinaryHeap((node: unknown) => (node as GridNode).f);\n }\n\n /**\n * Perform an A* Search on a graph given a start and end node.\n *\n * @method\n * @function\n * @private\n *\n * @param start {GridNode} beginning node of search\n * @param end {GridNode} end node of the search\n * @param options {Object} Search options\n * @return {Array(GridNode)} resulting list of nodes\n */\n private search(start: GridNode, end: GridNode, options: PathFindingSearchOptions = {}): GridNode[] {\n this.init();\n\n const heuristic = options.heuristic || PathFinding.HEURISTICS.manhattan;\n const closest = options.closest || false;\n\n const openHeap = this.getHeap();\n let closestNode = start; // set the start node to be the closest if required\n\n start.h = heuristic(start, end);\n\n openHeap.push(start);\n\n while (openHeap.size() > 0) {\n // Grab the lowest f(x) to process next. Heap keeps this sorted for us.\n const currentNode: GridNode = openHeap.pop() as GridNode;\n\n // End case -- result has been found, return the traced path.\n if (currentNode === end) {\n return this.pathTo(currentNode);\n }\n\n // Normal case -- move currentNode from open to closed, process each of its neighbors.\n currentNode.closed = true;\n\n // Find all neighbors for the current node.\n const neighbors = this.neighbors(currentNode);\n\n for (let i = 0, il = neighbors.length; i < il; ++i) {\n const neighbor = neighbors[i];\n\n if (neighbor.closed || neighbor.isWall()) {\n // Not a valid node to process, skip to next neighbor.\n continue;\n }\n\n // The g score is the shortest distance from start to current node.\n // We need to check if the path we have arrived at this neighbor is the shortest one we have seen yet.\n const gScore = currentNode.g + neighbor.getCost(currentNode),\n beenVisited = neighbor.visited;\n\n if (!beenVisited || gScore < neighbor.g) {\n // Found an optimal (so far) path to this node. Take score for node to see how good it is.\n neighbor.visited = true;\n neighbor.parent = currentNode;\n neighbor.h = neighbor.h || heuristic(neighbor, end);\n neighbor.g = gScore;\n neighbor.f = neighbor.g + neighbor.h;\n this.markDirty(neighbor);\n if (closest) {\n // If the neighbor is closer than the current closestNode or if it's equally close but has\n // a cheaper path than the current closest node then it becomes the closest node\n if (\n neighbor.h < closestNode.h ||\n (neighbor.h === closestNode.h && neighbor.g < closestNode.g)\n ) {\n closestNode = neighbor;\n }\n }\n\n if (!beenVisited) {\n // Pushing to heap will put it in proper place based on the 'f' value.\n openHeap.push(neighbor);\n } else {\n // Already seen the node, but since it has been re-scored we need to reorder it in the heap\n openHeap.rescoreElement(neighbor);\n }\n }\n }\n }\n\n if (closest) {\n return this.pathTo(closestNode);\n }\n\n // No result was found - empty array signifies failure to find path.\n return [];\n }\n\n private cleanNode(node: GridNode): void {\n node.f = 0;\n node.g = 0;\n node.h = 0;\n node.visited = false;\n node.closed = false;\n node.parent = null;\n }\n\n /**\n * Checks if the location is occupied/available or not.\n *\n * @method isCellFilled\n * @param c {number} column index of the location\n * @param r {number} row index of the location\n * @return {Array(Object)} if the location is not available\n */\n public isCellFilled(c: number, r: number): boolean {\n if (this.grid[c][r].weight === 0) {\n return true;\n }\n return false;\n }\n\n /**\n * Sets individual cell state for ground layer.\n *\n * @method setCell\n * @param c {number} column index of the location\n * @param r {number} row index of the location\n * @param movable {boolean} free to move or not\n */\n public setCell(c: number, r: number, movable: number): void {\n this.grid[c][r].staticWeight = this.grid[c][r].weight = movable;\n }\n\n /**\n * Sets individual cell state for objects layer.\n *\n * @method setDynamicCell\n * @param c {number} column index of the location\n * @param r {number} row index of the location\n * @param movable {boolean} free to move or not\n */\n public setDynamicCell(c: number, r: number, movable: number): void {\n // if it is movable by static tile property\n if (this.grid[c][r].staticWeight !== 0) {\n this.grid[c][r].weight = movable;\n }\n }\n\n /**\n * Clears all references.\n *\n * @method\n * @function\n * @public\n */\n public destroy(): void {\n this.grid = null;\n this.nodes = null;\n this.dirtyNodes = null;\n this.heuristic = null;\n }\n}\n","import {\n Texture,\n Container,\n Graphics,\n InteractionData,\n InteractionEvent,\n Loader,\n Sprite,\n DisplayObject,\n} from 'pixi.js';\nimport { ObjectView } from './ObjectView';\nimport { TileView } from './TileView';\nimport { MoveEngine, IMovable, ITweenTarget } from './MoveEngine';\nimport { GridNode } from '../pathFinding/GridNode';\nimport { PathFinding } from '../pathFinding/PathFinding';\nimport { existy, getDist, isInPolygon, mathMap } from '../utils/calculations';\nimport { KEY_EMPTY_TILE, KEY_NO_OBJECTS, PF_ALGORITHMS } from '../utils/constants';\nimport { trace } from '../utils/trace';\nimport {\n TColumnRowPair,\n getDirBetween,\n TMapData,\n IMapDataObject,\n MapDataObjectVisual,\n ObjectInfoInteractionOffsets,\n ObjectInfoTextureNames,\n ObjectVisualKey,\n TPositionPair,\n} from '../utils/map';\n\n/**\n * Type declaration for position frame setting.\n */\nexport type TPositionFrame = {\n /** x position of the frame */\n x: number;\n /** y position of the frame */\n y: number;\n /** width of the frame */\n w: number;\n /** height of the frame */\n h: number;\n};\n/**\n * Type declaration for engine-specific configuration.\n */\nexport type TEngineConfiguration = {\n /**\n * minimum scale that the PIXI.Container for the map can get, default 0.5\n * @default 0.5\n */\n minScale?: number;\n /**\n * maximum scale that the PIXI.Container for the map can get, default 1.5\n * @default 1.5\n */\n maxScale?: number;\n /** minimum zoom level, engine defined */\n minZoom?: number;\n /** maximum zoom level, engine defined */\n maxZoom?: number;\n /**\n * zoom increment amount calculated by the engine according to user settings, default 0.5\n * @default 0.5\n */\n zoomIncrement?: number;\n /**\n * used to calculate zoom increment, defined by user, default 5\n * @default 5\n */\n numberOfZoomLevels?: number;\n /**\n * initial zoom level of the map, default 0\n * @default 0\n */\n initialZoomLevel?: number;\n /**\n * specifies whether to zoom instantly or with a tween animation, default false\n * @default false\n */\n instantCameraZoom?: boolean;\n\n /**\n * height of a single isometric tile, default 74\n * @default 74\n */\n tileHeight?: number;\n /**\n * the angle between the top-left edge and the horizontal diagonal of a isometric quad, default 30\n * @default 30\n */\n isoAngle?: number;\n\n /**\n * frame to position the engine, default `{ x : 0, y : 0, w : 800, h : 600 }`\n * @default { x : 0, y : 0, w : 800, h : 600 }\n */\n initialPositionFrame?: TPositionFrame;\n\n /**\n * the type of path finding algorithm two use, default `TRAVISO.PF_ALGORITHMS.ASTAR_ORTHOGONAL`\n * @default TRAVISO.PF_ALGORITHMS.ASTAR_ORTHOGONAL\n */\n pathFindingType?: number;\n /**\n * whether to return the path to the closest node if the target is unreachable, default false\n * @default false\n */\n pathFindingClosest?: boolean;\n\n /**\n * defines if the camera will follow the current controllable or not, default true\n * @default true\n */\n followCharacter?: boolean;\n /**\n * specifies whether the camera moves instantly or with a tween animation to the target location, default false\n * @default false\n */\n instantCameraRelocation?: boolean;\n /**\n * specifies whether the map-objects will be moved to target location instantly or with an animation, default false\n * @default false\n */\n instantObjectRelocation?: boolean;\n\n /**\n * Make objects transparent when the controllable is behind them, default true\n * @default true\n */\n changeTransparencies?: boolean;\n\n /**\n * Highlight the path when the current controllable moves on the map, default true\n * @default true\n */\n highlightPath?: boolean;\n /**\n * Highlight the target tile when the current controllable moves on the map, default true\n * @default true\n */\n highlightTargetTile?: boolean;\n /**\n * Animate the tile highlights, default true\n * @default true\n */\n tileHighlightAnimated?: boolean;\n /**\n * Color code for the tile highlight fill (this will be overridden if a highlight-image is defined), default 0x80d7ff\n * @default 0x80d7ff\n */\n tileHighlightFillColor?: number;\n /**\n * Alpha value for the tile highlight fill (this will be overridden if a highlight-image is defined), default 0.5\n * @default 0.5\n */\n tileHighlightFillAlpha?: number;\n /**\n * Color code for the tile highlight stroke (this will be overridden if a highlight-image is defined), default 0xFFFFFF\n * @default 0xFFFFFF\n */\n tileHighlightStrokeColor?: number;\n /**\n * Alpha value for the tile highlight stroke (this will be overridden if a highlight-image is defined), default 1.0\n * @default 1.0\n */\n tileHighlightStrokeAlpha?: number;\n /**\n * When a tile selected don't move the controllable immediately but still call 'tileSelectCallback', default false\n * @default false\n */\n dontAutoMoveToTile?: boolean;\n /**\n * Looks for a path every time an object moves to a new tile (set to false if you don't have other moving objects on your map), default true\n * @default true\n */\n checkPathOnEachTile?: boolean;\n\n /**\n * Enable dragging the map with touch-and-touchmove or mousedown-and-mousemove on the map, default true\n * @default true\n */\n mapDraggable?: boolean;\n\n /**\n * Background color, if defined the engine will create a solid colored background for the map, default null\n * @default null\n */\n backgroundColor?: number;\n /**\n * Creates a mask using the position frame defined by 'initialPositionFrame' property or the 'posFrame' parameter that is passed to 'repositionContent' method, default false\n * @default false\n */\n useMask?: boolean;\n\n /** The path to the json file that defines map data, required */\n mapDataPath: string;\n /**\n * Array of paths to the assets that are desired to be loaded by traviso, no need to use if assets are already loaded to PIXI cache, default null\n * @default null\n */\n assetsToLoad?: string[];\n\n /**\n * Callback function that will be called once everything is loaded and engine instance is ready, default null\n * @default null\n */\n engineInstanceReadyCallback?: (engineInstance: EngineView) => unknown;\n /**\n * Callback function that will be called when a tile is selected (call params will be the row and column indexes of the tile selected), default null\n * @default null\n */\n tileSelectCallback?: (r: number, c: number) => unknown;\n /**\n * Callback function that will be called when a tile with an interactive map-object on it is selected (call param will be the object selected), default null\n * @default null\n */\n objectSelectCallback?: (objectView: ObjectView) => unknown;\n /**\n * Callback function that will be called when any moving object reaches its destination (call param will be the moving object itself), default null\n * @default null\n */\n objectReachedDestinationCallback?: (objectView: ObjectView) => unknown;\n /**\n * Callback function that will be called when any moving object is in move and there are other objects on the next tile, default null\n * @default null\n */\n otherObjectsOnTheNextTileCallback?: (objectView: ObjectView, otherObjectViews: ObjectView[]) => unknown;\n /**\n * Callback function that will be called every time an objects direction or position changed, default null\n * @default null\n */\n objectUpdateCallback?: (objectView: ObjectView) => unknown;\n};\n\n/**\n * Main PIXI.Container class to hold all views within the engine and all map related logic.\n *\n * @class EngineView\n * @extends PIXI.Container\n */\nexport class EngineView extends Container {\n /**\n * Internal property holding the engine configuration.\n *\n * @property\n * @private\n * @internal\n */\n private _config: TEngineConfiguration;\n\n /**\n * The default height of a single isometric tile\n *\n * @default 74\n * @property\n * @private\n * @static\n */\n private static readonly DEFAULT_TILE_H: number = 74;\n\n /**\n * The default angle (in degrees) between the top-left edge and the horizontal diagonal of a isometric quad\n *\n * @default 30\n * @property\n * @private\n * @static\n */\n private static readonly DEFAULT_ISO_ANGLE: number = 30;\n\n /**\n * Half-height of a single isometric tile\n *\n * @default 37\n * @property\n * @public\n */\n public readonly tileHalfHeight: number;\n\n /**\n * Half-width of a single isometric tile\n *\n * @default 64\n * @property\n * @public\n */\n public readonly tileHalfWidth: number;\n\n /**\n * Variable holding the parsed and processed map data\n *\n * @property\n * @public\n */\n public mapData: TMapData;\n\n /**\n * MoveEngine instance to handle all animations and tweens\n *\n * @property\n * @public\n */\n public moveEngine: MoveEngine;\n /**\n * Current scale of the map's display object\n *\n * @property\n * @private\n * @internal\n */\n private _currentScale: number;\n /**\n * Current zoom amount of the map\n *\n * @property\n * @private\n * @internal\n */\n private _currentZoom: number;\n /**\n * Active position frame for the engine.\n *\n * @property\n * @private\n * @internal\n */\n private _posFrame: TPositionFrame = { x: 0, y: 0, w: 800, h: 600 };\n /**\n * Active external center point for the engine.\n *\n * @property\n * @private\n * @internal\n */\n private _externalCenter: TPositionPair;\n\n /**\n * Solid colored background\n *\n * @property\n * @private\n * @internal\n */\n private _bg: Graphics;\n /**\n * Mask graphics for the mask\n *\n * @property\n * @private\n * @internal\n */\n private _mapMask: Graphics;\n /**\n * Display object for the map visuals\n *\n * @property\n * @private\n * @internal\n */\n private _mapContainer: Container;\n /**\n * Display object for the ground/terrain visuals\n *\n * @property\n * @private\n * @internal\n */\n private _groundContainer: Container;\n /**\n * Display object for the map-object visuals\n *\n * @property\n * @private\n * @internal\n */\n private _objContainer: Container;\n /**\n * Number of rows in the isometric map\n *\n * @property\n * @private\n * @internal\n */\n private _mapSizeR: number;\n /**\n * Number of columns in the isometric map\n *\n * @property\n * @private\n * @internal\n */\n private _mapSizeC: number;\n /**\n * Array to hold map-tiles\n *\n * @property\n * @private\n * @internal\n */\n private _tileArray: TileView[][];\n /**\n * Array to hold map-objects\n *\n * @property\n * @private\n * @internal\n */\n private _objArray: ObjectView[][][];\n /**\n * PathFinding instance to handle all path finding logic\n *\n * @property\n * @private\n * @internal\n */\n private _pathFinding: PathFinding;\n /**\n * Current controllable map-object that will be the default object to move in user interactions\n *\n * @property\n * @private\n * @internal\n */\n private _currentControllable: ObjectView;\n /**\n * Vertices of the map\n *\n * @property\n * @private\n * @internal\n */\n private _mapVertices: number[][];\n /**\n * Total width of all ground tiles\n *\n * @property\n * @private\n * @internal\n */\n private _mapVisualWidthReal: number;\n /**\n * Total height of all ground tiles\n *\n * @property\n * @private\n * @internal\n */\n private _mapVisualHeightReal: number;\n /**\n * @property\n * @private\n * @internal\n */\n private _currentFocusLocation: TColumnRowPair;\n /**\n * @property\n * @private\n * @internal\n */\n private _mapVisualWidthScaled: number;\n /**\n * @default `false`\n * @property\n * @private\n * @internal\n */\n private _dragging: boolean = false;\n /**\n * @property\n * @private\n * @internal\n */\n private _dragInitStartingX: number;\n /**\n * @property\n * @private\n * @internal\n */\n private _dragInitStartingY: number;\n /**\n * @property\n * @private\n * @internal\n */\n private _dragPrevStartingX: number;\n /**\n * @property\n * @private\n * @internal\n */\n private _dragPrevStartingY: number;\n /**\n * @property\n * @private\n * @internal\n */\n private onMouseUp_binded: (event: InteractionEvent) => void;\n /**\n * @property\n * @private\n * @internal\n */\n private onMouseDown_binded: (event: InteractionEvent) => void;\n /**\n * @property\n * @private\n * @internal\n */\n private onMouseMove_binded: (event: InteractionEvent) => void;\n\n /**\n * Constructor method for the main PIXI.Container class to hold all views within the engine and all map related logic.\n *\n * @constructor\n * @param config {TEngineConfiguration} configuration object for the isometric engine instance\n */\n constructor(config: TEngineConfiguration) {\n super();\n\n this.onMouseUp_binded = this.onMouseUp.bind(this);\n this.onMouseDown_binded = this.onMouseDown.bind(this);\n this.onMouseMove_binded = this.onMouseMove.bind(this);\n\n this._config = config;\n\n // set the properties that are set by default when not defined by the user\n this._config.followCharacter = existy(this._config.followCharacter) ? this._config.followCharacter : true;\n this._config.changeTransparencies = existy(this._config.changeTransparencies)\n ? this._config.changeTransparencies\n : true;\n this._config.highlightPath = existy(this._config.highlightPath) ? this._config.highlightPath : true;\n this._config.highlightTargetTile = existy(this._config.highlightTargetTile)\n ? this._config.highlightTargetTile\n : true;\n this._config.tileHighlightAnimated = existy(this._config.tileHighlightAnimated)\n ? this._config.tileHighlightAnimated\n : true;\n this._config.tileHighlightFillColor = existy(this._config.tileHighlightFillColor)\n ? this._config.tileHighlightFillColor\n : 0x80d7ff;\n this._config.tileHighlightFillAlpha = existy(this._config.tileHighlightFillAlpha)\n ? this._config.tileHighlightFillAlpha\n : 0.5;\n this._config.tileHighlightStrokeColor = existy(this._config.tileHighlightStrokeColor)\n ? this._config.tileHighlightStrokeColor\n : 0xffffff;\n this._config.tileHighlightStrokeAlpha = existy(this._config.tileHighlightStrokeAlpha)\n ? this._config.tileHighlightStrokeAlpha\n : 1.0;\n this._config.dontAutoMoveToTile = existy(this._config.dontAutoMoveToTile)\n ? this._config.dontAutoMoveToTile\n : false;\n this._config.checkPathOnEachTile = existy(this._config.checkPathOnEachTile)\n ? this._config.checkPathOnEachTile\n : true;\n this._config.mapDraggable = existy(this._config.mapDraggable) ? this._config.mapDraggable : true;\n this._config.isoAngle = existy(this._config.isoAngle) ? this._config.isoAngle : EngineView.DEFAULT_ISO_ANGLE;\n this._config.tileHeight = existy(this._config.tileHeight) ? this._config.tileHeight : EngineView.DEFAULT_TILE_H;\n\n this.setZoomParameters(\n this._config.minScale,\n this._config.maxScale,\n this._config.numberOfZoomLevels,\n this._config.initialZoomLevel,\n this._config.instantCameraZoom\n );\n\n this.tileHalfHeight = this._config.tileHeight / 2;\n this.tileHalfWidth = this.tileHalfHeight * Math.tan(((90 - this._config.isoAngle) * Math.PI) / 180);\n // this.TILE_W = this.tileHalfWidth * 2;\n\n this.loadAssetsAndData();\n }\n\n /**\n * Handles loading of necessary assets and map data for the given engine instance.\n *\n * @method\n * @function\n * @private\n * @internal\n */\n private loadAssetsAndData(): void {\n if (!this._config.mapDataPath) {\n throw new Error(\n \"TRAVISO: No JSON-file path defined for map data. Please check your configuration object that you pass to the 'getEngineInstance' method.\"\n );\n } else if (this._config.mapDataPath.split('.').pop() !== 'json') {\n throw new Error('TRAVISO: Invalid map-data file path. This file has to be a json file.');\n }\n\n const loader = new Loader();\n loader.add('mapData', this._config.mapDataPath);\n\n if (this._config.assetsToLoad && this._config.assetsToLoad.length > 0) {\n loader.add(this._config.assetsToLoad);\n }\n\n loader.load(this.assetsAndDataLoaded.bind(this));\n\n // TRAVISO.loadData();\n }\n\n /**\n * Handles loading of map data for the given engine instance.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param loader {Loader} PIXI's loader instance\n */\n private assetsAndDataLoaded(loader: Loader): void {\n // console.log('assetsAndDataLoaded', resources.mapData.data);\n\n const mapData: TMapData = loader.resources.mapData.data as TMapData;\n\n // initial controls\n\n if (!existy(mapData.initialControllableLocation)) {\n trace(\n \"Map-data file warning: No 'initialControllableLocation' defined. Ignore this warning if you are adding it later manually.\"\n );\n } else if (\n !existy(mapData.initialControllableLocation.columnIndex) ||\n !existy(mapData.initialControllableLocation.rowIndex)\n ) {\n trace(\"Map-data file warning: 'initialControllableLocation' exists but it is not defined properly.\");\n mapData.initialControllableLocation = null;\n }\n\n if (mapData.tileHighlightImage && !mapData.tileHighlightImage.path) {\n trace(\"Map-data file warning: 'tileHighlightImage' exists but its 'path' is not defined properly.\");\n mapData.tileHighlightImage = null;\n }\n\n if (mapData.singleGroundImage && !mapData.singleGroundImage.path) {\n trace(\"Map-data file warning: 'singleGroundImage' exists but its 'path' is not defined properly.\");\n mapData.singleGroundImage = null;\n }\n\n let i: number, j: number, arr: string[];\n let rows = mapData.groundMap;\n mapData.groundMapData = [];\n for (i = 0; i < rows.length; i++) {\n arr = String(rows[i].row).replace(/\\s/g, '').split(',');\n // remove empty spaces in a row and cast to an array\n for (j = arr.length; j--; ) {\n arr[j] = arr[j] || KEY_EMPTY_TILE;\n }\n mapData.groundMapData[i] = arr;\n }\n\n rows = mapData.objectsMap;\n mapData.objectsMapData = [];\n for (i = 0; i < rows.length; i++) {\n arr = String(rows[i].row).replace(/\\s/g, '').split(',');\n // remove empty spaces in a row and cast to an array\n for (j = arr.length; j--; ) {\n arr[j] = arr[j] || KEY_NO_OBJECTS;\n }\n mapData.objectsMapData[i] = arr;\n }\n\n if (!existy(mapData.tiles)) {\n trace(\"Map-data file warning: No 'tiles' defined.\");\n mapData.tiles = {};\n }\n if (!existy(mapData.objects)) {\n trace(\"Map-data file warning: No 'objects' defined.\");\n mapData.objects = {};\n }\n\n let obj: IMapDataObject,\n objId: string,\n visual: MapDataObjectVisual,\n visualId: ObjectVisualKey,\n interactionOffsets: ObjectInfoInteractionOffsets,\n oTextures: ObjectInfoTextureNames,\n m: number,\n n: number;\n for (objId in mapData.objects) {\n obj = mapData.objects[objId];\n if (!existy(obj.visuals)) {\n throw new Error('TRAVISO: No visuals defined in data-file for object type: ' + objId);\n }\n obj.id = objId;\n if (!existy(obj.rowSpan)) {\n obj.rowSpan = 1;\n }\n if (!existy(obj.columnSpan)) {\n obj.columnSpan = 1;\n }\n\n oTextures = {};\n interactionOffsets = {};\n\n for (visualId in obj.visuals) {\n visual = obj.visuals[visualId];\n\n if (existy(visual.ipor) && existy(visual.ipoc)) {\n interactionOffsets[visualId] = {\n c: Number(visual.ipoc),\n r: Number(visual.ipor),\n };\n }\n\n // visual = (visual as MapDataObjectVisualType1);\n if (visual.frames && visual.frames.length > 0) {\n oTextures[visualId] = [];\n for (m = 0; m < visual.frames.length; m++) {\n oTextures[visualId][m] = visual.frames[m].path;\n }\n } else {\n if (!visual.path || !visual.extension || !visual.numberOfFrames || visual.numberOfFrames < 1) {\n throw new Error(\n 'TRAVISO: Invalid or missing visual attributes detected in data-file for visual with id: ' +\n visualId\n );\n }\n\n oTextures[visualId] = [];\n if (visual.numberOfFrames === 1) {\n oTextures[visualId][0] = visual.path + '.' + visual.extension;\n } else {\n n = 0;\n for (m = visual.startIndex; m < visual.numberOfFrames; m++) {\n oTextures[visualId][n++] = visual.path + String(m) + '.' + visual.extension;\n }\n }\n }\n }\n\n obj.textureNames = oTextures;\n obj.io = interactionOffsets;\n obj.f = !!obj.floor;\n obj.nt = !!obj.noTransparency;\n obj.m = !!obj.movable;\n obj.i = !!obj.interactive;\n }\n\n delete mapData.objectsMap;\n delete mapData.groundMap;\n\n this.mapData = mapData;\n\n this.onAllAssetsLoaded();\n }\n\n /**\n * This method is being called whenever all the assets are\n * loaded and engine is ready to initialize.\n *\n * @method\n * @function\n * @private\n * @internal\n */\n private onAllAssetsLoaded(): void {\n trace('All assets loaded');\n\n this.moveEngine = new MoveEngine(this);\n\n this._currentScale = 1.0;\n this._currentZoom = 0;\n\n this._posFrame = this._config.initialPositionFrame || {\n x: 0,\n y: 0,\n w: 800,\n h: 600,\n };\n\n this._externalCenter = {\n x: this._posFrame.w >> 1,\n y: this._posFrame.h >> 1,\n };\n\n this.createMap();\n\n this.repositionContent(this._config.initialPositionFrame);\n\n this.enableInteraction();\n\n if (this._config.engineInstanceReadyCallback) {\n this._config.engineInstanceReadyCallback(this);\n }\n }\n\n /**\n * Creates the map and setups necessary parameters for future map calculations.\n *\n * @method\n * @function\n * @private\n * @internal\n */\n private createMap(): void {\n // create background\n if (this._config.backgroundColor) {\n this._bg = new Graphics();\n this.addChild(this._bg);\n }\n\n // create mask\n if (this._config.useMask) {\n this._mapMask = new Graphics();\n this.addChild(this._mapMask);\n }\n\n // create containers for visual map elements\n this._mapContainer = new Container();\n this.addChild(this._mapContainer);\n\n // Define two layers of maps\n // One for the world and one for the objects (static/dynamic) over it\n // This enables us not to update the whole world in every move but instead just update the object depths over it\n\n this._groundContainer = new Container();\n this._mapContainer.addChild(this._groundContainer);\n\n this._objContainer = new Container();\n this._mapContainer.addChild(this._objContainer);\n\n const groundMapData = this.mapData.groundMapData;\n const objectsMapData = this.mapData.objectsMapData;\n\n const initialControllableLocation = this.mapData.initialControllableLocation;\n\n // set map size\n this._mapSizeR = groundMapData.length;\n this._mapSizeC = groundMapData[0].length;\n\n // add ground image first if it is defined\n let groundImageSprite: Sprite;\n if (this.mapData.singleGroundImage) {\n groundImageSprite = new Sprite(Texture.from(this.mapData.singleGroundImage.path));\n this._groundContainer.addChild(groundImageSprite);\n\n groundImageSprite.scale.set(this.mapData.singleGroundImage.scale || 1);\n }\n\n // create arrays to hold tiles and objects\n this._tileArray = [];\n this._objArray = [];\n let i, j;\n for (i = 0; i < this._mapSizeR; i++) {\n this._tileArray[i] = [];\n this._objArray[i] = [];\n for (j = 0; j < this._mapSizeC; j++) {\n this._tileArray[i][j] = null;\n this._objArray[i][j] = null;\n }\n }\n\n // Map data is being sent to path finding and after this point\n // its content will be different acc to the path-finding algorithm.\n // It is still being stored in engine.mapData but you must be aware\n // of the structure if you want to use it after this point.\n this._pathFinding = new PathFinding(this._mapSizeC, this._mapSizeR, {\n diagonal: this._config.pathFindingType === PF_ALGORITHMS.ASTAR_DIAGONAL,\n closest: this._config.pathFindingClosest,\n });\n\n let tile;\n for (i = 0; i < this._mapSizeR; i++) {\n for (j = this._mapSizeC - 1; j >= 0; j--) {\n this._tileArray[i][j] = null;\n if (groundMapData[i][j] && groundMapData[i][j] !== KEY_EMPTY_TILE) {\n tile = new TileView(this, groundMapData[i][j]);\n tile.position.x = this.getTilePosXFor(i, j);\n tile.position.y = this.getTilePosYFor(i, j);\n tile.mapPos = { c: j, r: i };\n this._tileArray[i][j] = tile;\n this._groundContainer.addChild(tile);\n\n if (!tile.isMovableTo) {\n this._pathFinding.setCell(j, i, 0);\n }\n } else {\n this._pathFinding.setCell(j, i, 0);\n }\n }\n }\n\n let obj,\n floorObjectFound = false;\n for (i = 0; i < this._mapSizeR; i++) {\n for (j = this._mapSizeC - 1; j >= 0; j--) {\n this._objArray[i][j] = null;\n if (objectsMapData[i][j] && objectsMapData[i][j] !== KEY_NO_OBJECTS) {\n obj = new ObjectView(this, objectsMapData[i][j]);\n obj.position.x = this.getTilePosXFor(i, j);\n obj.position.y = this.getTilePosYFor(i, j) + this.tileHalfHeight;\n obj.mapPos = { c: j, r: i };\n\n if (!floorObjectFound && obj.isFloorObject) {\n floorObjectFound = true;\n }\n\n this._objContainer.addChild(obj);\n\n this.addObjRefToLocation(obj, obj.mapPos);\n\n // if (initialControllableLocation && initialControllableLocation.c === j && initialControllableLocation.r === i)\n if (\n initialControllableLocation &&\n initialControllableLocation.columnIndex === j &&\n initialControllableLocation.rowIndex === i\n ) {\n this._currentControllable = obj;\n }\n }\n }\n }\n if (floorObjectFound) {\n // run the loop again to bring the other objects on top of the floor objects\n let a, k;\n for (i = 0; i < this._mapSizeR; i++) {\n for (j = this._mapSizeC - 1; j >= 0; j--) {\n a = this._objArray[i][j];\n if (a) {\n for (k = 0; k < a.length; k++) {\n if (!a[k].isFloorObject) {\n this._objContainer.addChild(a[k]);\n }\n }\n }\n }\n }\n }\n // cacheAsBitmap: for now this creates problem with tile highlights\n // this._groundContainer.cacheAsBitmap = true;\n\n this._mapVertices = [\n [this.getTilePosXFor(0, 0) - this.tileHalfWidth, this.getTilePosYFor(0, 0)],\n [\n this.getTilePosXFor(0, this._mapSizeC - 1),\n this.getTilePosYFor(0, this._mapSizeC - 1) - this.tileHalfHeight,\n ],\n [\n this.getTilePosXFor(this._mapSizeR - 1, this._mapSizeC - 1) + this.tileHalfWidth,\n this.getTilePosYFor(this._mapSizeR - 1, this._mapSizeC - 1),\n ],\n [\n this.getTilePosXFor(this._mapSizeR - 1, 0),\n this.getTilePosYFor(this._mapSizeR - 1, 0) + this.tileHalfHeight,\n ],\n ];\n\n this._mapVisualWidthReal =\n this.getTilePosXFor(this._mapSizeR - 1, this._mapSizeC - 1) - this.getTilePosXFor(0, 0);\n this._mapVisualHeightReal =\n this.getTilePosYFor(this._mapSizeR - 1, 0) - this.getTilePosYFor(0, this._mapSizeC - 1);\n\n if (groundImageSprite) {\n groundImageSprite.position.x =\n this._mapVertices[0][0] + this.tileHalfWidth + (this._mapVisualWidthReal - groundImageSprite.width) / 2;\n groundImageSprite.position.y =\n this._mapVertices[1][1] +\n this.tileHalfHeight +\n (this._mapVisualHeightReal - groundImageSprite.height) / 2;\n }\n\n this.zoomTo(this._config.initialZoomLevel, true);\n\n if (this._config.followCharacter && initialControllableLocation) {\n // this.centralizeToLocation(initialControllableLocation.c, initialControllableLocation.r, true);\n this.centralizeToLocation(\n initialControllableLocation.columnIndex,\n initialControllableLocation.rowIndex,\n true\n );\n } else {\n this.centralizeToCurrentExternalCenter(true);\n }\n }\n\n /**\n * Calculates 2D X position of a tile, given its column and row indices.\n *\n * @method\n * @function\n * @public\n *\n * @param r {number} row index of the tile\n * @param c {number} column index of the tile\n * @return {number} 2D X position of a tile\n */\n public getTilePosXFor(r: number, c: number): number {\n return c * this.tileHalfWidth + r * this.tileHalfWidth;\n }\n\n /**\n * Calculates 2D Y position of a tile, given its column and row indices.\n *\n * @method\n * @function\n * @public\n *\n * @param r {number} row index of the tile\n * @param c {number} column index of the tile\n * @return {number} 2D Y position of a tile\n */\n public getTilePosYFor(r: number, c: number): number {\n return r * this.tileHalfHeight - c * this.tileHalfHeight;\n }\n\n /**\n * Shows or hides the display object that includes the objects-layer\n *\n * @method\n * @function\n * @public\n *\n * @param show {boolean} show the object layer, default `false`\n */\n public showHideObjectLayer(show: boolean = false): void {\n this._objContainer.visible = show;\n }\n /**\n * Shows or hides the display object that includes the ground/terrain layer\n *\n * @method\n * @function\n * @public\n *\n * @param show {boolean} show the ground layer, default `false`\n */\n public showHideGroundLayer(show: boolean = false): void {\n this._groundContainer.visible = show;\n }\n /**\n * Returns the TileView instance that sits in the location given by row and column indices.\n *\n * @method\n * @function\n * @public\n *\n * @param r {number} row index of the tile\n * @param c {number} column index of the tile\n * @return {TileView} the tile in the location given\n */\n public getTileAtRowAndColumn(r: number, c: number): TileView {\n return this._tileArray[r][c];\n }\n /**\n * Returns all the ObjectView instances referenced to the given location with the specified row and column indices.\n *\n * @method\n * @function\n * @public\n *\n * @param r {number} the row index of the map location\n * @param c {number} the column index of the map location\n * @return {Array(ObjectView)} an array of map-objects referenced to the given location\n */\n public getObjectsAtRowAndColumn(r: number, c: number): ObjectView[] {\n return this._objArray[r][c];\n }\n /**\n * Returns all the ObjectView instances referenced to the given location.\n *\n * @method\n * @function\n * @public\n *\n * @param pos {TColumnRowPair} position object including row and column coordinates\n * @return {Array(ObjectView)} an array of map-objects referenced to the given location\n */\n public getObjectsAtLocation(pos: TColumnRowPair): ObjectView[] {\n return this._objArray[pos.r][pos.c];\n }\n\n /**\n * Creates and adds a predefined (in json file) map-object to the map using the specified object type-id.\n *\n * @method\n * @function\n * @public\n *\n * @param type {number} type-id of the object as defined in the json file\n * @param pos {TColumnRowPair} position object including row and column coordinates\n * @return {ObjectView} the newly created map-object\n */\n public createAndAddObjectToLocation(type: string, pos: TColumnRowPair): ObjectView {\n return this.addObjectToLocation(new ObjectView(this, type), pos);\n }\n /**\n * Adds an already-created object to the map.\n *\n * @method\n * @function\n * @public\n *\n * @param obj {ObjectView} a map-object to add to the map and the given location\n * @param pos {TColumnRowPair} position object including row and column coordinates\n * @return {ObjectView} the newly added object\n */\n public addObjectToLocation(obj: ObjectView, pos: TColumnRowPair): ObjectView {\n obj.position.x = this.getTilePosXFor(pos.r, pos.c);\n obj.position.y = this.getTilePosYFor(pos.r, pos.c) + this.tileHalfHeight;\n obj.mapPos = { c: pos.c, r: pos.r };\n\n this._objContainer.addChild(obj);\n\n this.addObjRefToLocation(obj, obj.mapPos);\n this.arrangeDepthsFromLocation(obj.isFloorObject ? { c: this._mapSizeC - 1, r: 0 } : obj.mapPos);\n\n return obj;\n }\n\n /**\n * Enables adding external custom display objects to the specified location.\n * This method should be used for the objects that are not already defined in json file and don't have a type-id.\n * The resulting object will be independent of engine mechanics apart from depth controls.\n *\n * @method\n * @function\n * @public\n *\n * @param displayObject {PIXI.DisplayObject} object to be added to location\n * @param displayObject.isMovableTo {boolean} if the object can be moved onto by other map-objects, default true\n * @param displayObject.columnSpan {number} number of tiles that map-object covers horizontally on the isometric map\n * @param displayObject.rowSpan {number} number of tiles that map-object covers vertically on the isometric map\n * @param pos {TColumnRowPair} position object including row and column coordinates\n * @return {PIXI.DisplayObject} the newly added object\n */\n public addCustomObjectToLocation(displayObject: ObjectView, pos: TColumnRowPair): DisplayObject {\n displayObject.isMovableTo = existy(displayObject.isMovableTo) ? displayObject.isMovableTo : true;\n displayObject.columnSpan = displayObject.columnSpan || 1;\n displayObject.rowSpan = displayObject.rowSpan || 1;\n\n return this.addObjectToLocation(displayObject, pos);\n\n // this.removeObjRefFromLocation(displayObject, pos);\n }\n /**\n * Removes the object and its references from the map.\n *\n * @method\n * @function\n * @public\n *\n * @param obj {ObjectView} Either an external display object or a map-object (ObjectView)\n * @param pos {TColumnRowPair} position object including row and column coordinates. If not defined, the engine will use `obj.mapPos` to remove the map-object\n */\n public removeObjectFromLocation(obj: ObjectView, pos: TColumnRowPair): void {\n pos = pos || obj.mapPos;\n this._objContainer.removeChild(obj);\n this.removeObjRefFromLocation(obj, pos);\n }\n /**\n * Centralizes and zooms the EngineView instance to the object specified.\n *\n * @method focusMapToObject\n * @param obj {ObjectView} the object that map will be focused with respect to\n * @param obj.mapPos {Object} the object that holds the location of the map-object on the map\n * @param obj.mapPos.c {number} the column index of the map location\n * @param obj.mapPos.r {number} the row index of the map location\n * @param obj.columnSpan {number} number of tiles that map-object covers horizontally on the isometric map\n * @param obj.rowSpan {number} number of tiles that map-object covers vertically on the isometric map\n */\n public focusMapToObject(obj: ObjectView): void {\n this.focusMapToLocation(obj.mapPos.c + (obj.columnSpan - 1) / 2, obj.mapPos.r - (obj.rowSpan - 1) / 2, 0);\n }\n /**\n * Centralizes and zooms the EngineView instance to the map location specified by row and column index.\n *\n * @method focusMapToLocation\n * @param c {number} the column index of the map location\n * @param r {number} the row index of the map location\n * @param zoomAmount {number} targeted zoom level for focusing\n */\n public focusMapToLocation(c: number, r: number, zoomAmount: number): void {\n // NOTE: using zoomTo instead of setScale causes centralizeToPoint to be called twice (no visual problem)\n this.zoomTo(zoomAmount, false);\n this.centralizeToLocation(c, r, this._config.instantCameraRelocation);\n }\n /**\n * Centralizes the EngineView instance to the object specified.\n *\n * @method centralizeToObject\n * @param obj {ObjectView} the object that map will be centralized with respect to\n * @param obj.mapPos {Object} the object that holds the location of the map-object on the map\n * @param obj.mapPos.c {number} the column index of the map location\n * @param obj.mapPos.r {number} the row index of the map location\n */\n public centralizeToObject(obj: ObjectView): void {\n this.centralizeToLocation(obj.mapPos.c, obj.mapPos.r, this._config.instantCameraRelocation);\n }\n /**\n * Centralizes the EngineView instance to the map location specified by row and column index.\n *\n * @method centralizeToLocation\n * @param c {number} the column index of the map location\n * @param r {number} the row index of the map location\n * @param [instantRelocate=false] {boolean} specifies if the camera move will be animated or instant\n */\n public centralizeToLocation(c: number, r: number, instantRelocate: boolean): void {\n this._currentFocusLocation = { c: c, r: r };\n const px =\n this._externalCenter.x + (this._mapVisualWidthScaled >> 1) - this.getTilePosXFor(r, c) * this._currentScale;\n const py = this._externalCenter.y - this.getTilePosYFor(r, c) * this._currentScale;\n this.centralizeToPoint(px, py, instantRelocate);\n }\n /**\n * Centralizes the EngineView instance to the current location of the attention/focus.\n *\n * @method centralizeToCurrentFocusLocation\n * @param [instantRelocate=false] {boolean} specifies if the camera move will be animated or instant\n */\n public centralizeToCurrentFocusLocation(instantRelocate: boolean): void {\n this.centralizeToLocation(this._currentFocusLocation.c, this._currentFocusLocation.r, instantRelocate);\n }\n /**\n * External center is the central point of the frame defined by the user to be used as the visual size of the engine.\n * This method centralizes the EngineView instance with respect to this external center-point.\n *\n * @method\n * @function\n * @public\n *\n * @param instantRelocate {boolean} specifies if the camera move will be animated or instant\n */\n public centralizeToCurrentExternalCenter(instantRelocate: boolean): void {\n if (this._externalCenter) {\n this._currentFocusLocation = {\n c: this._mapSizeC >> 1,\n r: this._mapSizeR >> 1,\n };\n this.centralizeToPoint(this._externalCenter.x, this._externalCenter.y, instantRelocate);\n }\n }\n /**\n * Centralizes the EngineView instance to the points specified.\n *\n * @method\n * @function\n * @public\n *\n * @param px {number} the x coordinate of the center point with respect to EngineView frame\n * @param py {number} the y coordinate of the center point with respect to EngineView frame\n * @param instantRelocate {boolean} specifies if the relocation will be animated or instant\n */\n public centralizeToPoint(px: number, py: number, instantRelocate: boolean): void {\n if (this._tileArray) {\n px = px - (this._mapVisualWidthScaled >> 1);\n if (\n (existy(instantRelocate) && instantRelocate) ||\n (!existy(instantRelocate) && this._config.instantCameraRelocation)\n ) {\n this._mapContainer.position.x = px;\n this._mapContainer.position.y = py;\n } else {\n this.moveEngine.addTween(\n this._mapContainer.position as unknown as ITweenTarget,\n 0.5,\n { x: px, y: py },\n 0,\n 'easeInOut',\n true\n );\n }\n }\n }\n /**\n * Sets all the parameters related to zooming in and out.\n *\n * @method\n * @function\n * @public\n *\n * @param minScale {number} minimum scale that the PIXI.Container for the map can get, default 0.5\n * @param maxScale {number} maximum scale that the PIXI.Container for the map can get, default 1.5\n * @param numberOfZoomLevels {number} used to calculate zoom increment, defined by user, default 5\n * @param initialZoomLevel {number} initial zoom level of the map, default 0\n * @param instantCameraZoom {boolean} specifies whether to zoom instantly or with a tween animation, default false\n */\n public setZoomParameters(\n minScale: number = 0.5,\n maxScale: number = 1.5,\n numberOfZoomLevels: number = 5,\n initialZoomLevel: number = 0,\n instantCameraZoom: boolean = false\n ): void {\n this._config.minScale = minScale;\n this._config.maxScale = maxScale;\n this._config.minZoom = -1;\n this._config.maxZoom = 1;\n this._config.zoomIncrement = existy(numberOfZoomLevels)\n ? numberOfZoomLevels <= 1\n ? 0\n : 2 / (numberOfZoomLevels - 1)\n : 0.5;\n\n this._config.initialZoomLevel = initialZoomLevel;\n this._config.instantCameraZoom = instantCameraZoom;\n }\n /**\n * Sets map's scale.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param s {number} Scale amount for both x and y coordinates\n * @param instantZoom {boolean} Specifies if the scaling will be animated or instant\n */\n private setScale(s: number, instantZoom: boolean): void {\n if (s < this._config.minScale) {\n s = this._config.minScale;\n } else if (s > this._config.maxScale) {\n s = this._config.maxScale;\n }\n this._currentScale = s;\n this._mapVisualWidthScaled = this._mapVisualWidthReal * this._currentScale;\n // this.mapVisualHeightScaled = this._mapVisualHeightReal * this._currentScale;\n\n if ((existy(instantZoom) && instantZoom) || (!existy(instantZoom) && this._config.instantCameraZoom)) {\n this._mapContainer.scale.set(this._currentScale);\n } else {\n this.moveEngine.addTween(\n this._mapContainer.scale as unknown as ITweenTarget,\n 0.5,\n { x: this._currentScale, y: this._currentScale },\n 0,\n 'easeInOut',\n true\n );\n }\n }\n /**\n * Zooms camera by to the amount given.\n *\n * @method\n * @function\n * @public\n *\n * @param zoomAmount {number} specifies zoom amount (between -1 and 1). Use -1, -0.5, 0, 0,5, 1 for better results.\n * @param instantZoom {boolean} specifies whether to zoom instantly or with a tween animation\n */\n public zoomTo(zoomAmount: number, instantZoom: boolean): void {\n zoomAmount = zoomAmount || 0;\n let s = mathMap(\n zoomAmount,\n this._config.minZoom,\n this._config.maxZoom,\n this._config.minScale,\n this._config.maxScale,\n true\n );\n s = Math.round(s * 10) / 10;\n\n this._currentZoom = mathMap(\n s,\n this._config.minScale,\n this._config.maxScale,\n this._config.minZoom,\n this._config.maxZoom,\n true\n );\n\n this._externalCenter = this._externalCenter\n ? this._externalCenter\n : { x: this._mapVisualWidthScaled >> 1, y: 0 };\n const diff = {\n x: this._mapContainer.position.x + (this._mapVisualWidthScaled >> 1) - this._externalCenter.x,\n y: this._mapContainer.position.y - this._externalCenter.y,\n };\n const oldScale = this._currentScale;\n\n this.setScale(s, instantZoom);\n\n const ratio = this._currentScale / oldScale;\n this.centralizeToPoint(\n this._externalCenter.x + diff.x * ratio,\n this._externalCenter.y + diff.y * ratio,\n (existy(instantZoom) && instantZoom) || (!existy(instantZoom) && this._config.instantCameraZoom)\n );\n\n // trace(\"scalingTo: \" + this._currentScale);\n // trace(\"zoomingTo: \" + this._currentZoom);\n }\n /**\n * Zooms the camera one level out.\n *\n * @method\n * @function\n * @public\n *\n * @param instantZoom {boolean} Specifies whether to zoom instantly or with a tween animation\n */\n public zoomOut(instantZoom: boolean): void {\n this.zoomTo(this._currentZoom - this._config.zoomIncrement, instantZoom);\n }\n /**\n * Zooms the camera one level in.\n *\n * @method zoomIn\n * @param [instantZoom=false] {boolean} specifies whether to zoom instantly or with a tween animation\n */\n public zoomIn(instantZoom: boolean): void {\n this.zoomTo(this._currentZoom + this._config.zoomIncrement, instantZoom);\n }\n /**\n * Returns the current controllable map-object.\n *\n * @method getCurrentControllable\n * @return {ObjectView} current controllable map-object\n */\n public getCurrentControllable(): ObjectView {\n return this._currentControllable;\n }\n /**\n * Sets a map-object as the current controllable. This object will be moving in further relevant user interactions.\n *\n * @method setCurrentControllable\n * @param obj {ObjectView} object to be set as current controllable\n * @param obj.mapPos {Object} object including r and c coordinates\n * @param obj.mapPos.c {number} the column index of the map location\n * @param obj.mapPos.r {number} the row index of the map location\n */\n public setCurrentControllable(obj: ObjectView): void {\n this._currentControllable = obj;\n }\n /**\n * Adds a reference of the given map-object to the given location in the object array.\n * This should be called when an object moved or transferred to the corresponding location.\n * Uses objects size property to add its reference to all relevant cells.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param obj {ObjectView} object to be bind to location\n * @param obj.columnSpan {number} number of tiles that map-object covers horizontally on the isometric map\n * @param obj.rowSpan {number} number of tiles that map-object covers vertically on the isometric map\n * @param pos {TColumnRowPair} position object including row and column coordinates\n */\n private addObjRefToLocation(obj: ObjectView, pos: TColumnRowPair): void {\n let k, m;\n for (k = pos.c; k < pos.c + obj.columnSpan; k++) {\n for (m = pos.r; m > pos.r - obj.rowSpan; m--) {\n this.addObjRefToSingleLocation(obj, { c: k, r: m });\n }\n }\n }\n /**\n * Adds a reference of the given map-object to the given location in the object array.\n * Updates the cell as movable or not according to the object being movable onto or not.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param obj {ObjectView} object to be bind to location\n * @param obj.isMovableTo {boolean} is the object is movable onto by the other objects or not\n * @param pos {TColumnRowPair} position object including row and column coordinates\n */\n private addObjRefToSingleLocation(obj: ObjectView, pos: TColumnRowPair): void {\n if (!this._objArray[pos.r][pos.c]) {\n this._objArray[pos.r][pos.c] = [];\n }\n const index = this._objArray[pos.r][pos.c].indexOf(obj);\n if (index < 0) {\n this._objArray[pos.r][pos.c].push(obj);\n }\n\n if (!obj.isMovableTo) {\n this._pathFinding.setDynamicCell(pos.c, pos.r, 0);\n }\n }\n /**\n * Removes references of the given map-object from the given location in the object array.\n * This should be called when an object moved or transferred from the corresponding location.\n * Uses objects size property to remove its references from all relevant cells.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param obj {ObjectView} object to be bind to location\n * @param obj.columnSpan {number} number of tiles that map-object covers horizontally on the isometric map\n * @param obj.rowSpan {number} number of tiles that map-object covers vertically on the isometric map\n * @param pos {TColumnRowPair} position object including row and column coordinates\n */\n private removeObjRefFromLocation(obj: ObjectView, pos: TColumnRowPair): void {\n let k, m;\n for (k = pos.c; k < pos.c + obj.columnSpan; k++) {\n for (m = pos.r; m > pos.r - obj.rowSpan; m--) {\n this.removeObjRefFromSingleLocation(obj, { c: k, r: m });\n }\n }\n }\n /**\n * Removes a reference of the given map-object from the given location in the object array.\n * Updates the cell as movable or not according to the other object references in the same cell.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param obj {ObjectView} object to be bind to location\n * @param pos {TColumnRowPair} position object including row and column coordinates\n */\n private removeObjRefFromSingleLocation(obj: ObjectView, pos: TColumnRowPair): void {\n if (this._objArray[pos.r][pos.c]) {\n const index = this._objArray[pos.r][pos.c].indexOf(obj);\n if (index > -1) {\n this._objArray[pos.r][pos.c].splice(index, 1);\n }\n if (this._objArray[pos.r][pos.c].length === 0) {\n this._pathFinding.setDynamicCell(pos.c, pos.r, 1);\n this._objArray[pos.r][pos.c] = null;\n } else {\n const a = this._objArray[pos.r][pos.c];\n const l = a.length;\n for (let i = 0; i < l; i++) {\n if (!a[i].isMovableTo) {\n this._pathFinding.setDynamicCell(pos.c, pos.r, 0);\n break;\n } else if (i === l - 1) {\n this._pathFinding.setDynamicCell(pos.c, pos.r, 1);\n }\n }\n }\n }\n }\n // /**\n // * Removes all map-object references from the given location in the object array.\n // *\n // * @private\n // * @method removeAllObjectRefsFromLocation\n // * @param {TColumnRowPair} pos object including r and c coordinates\n // */\n // private removeAllObjectRefsFromLocation(pos: TColumnRowPair): void {\n // if (this._objArray[pos.r][pos.c]) {\n // this._pathFinding.setDynamicCell(pos.c, pos.r, 1);\n // this._objArray[pos.r][pos.c] = null;\n // }\n // }\n /**\n * Sets alphas of the map-objects referenced to the given location.\n *\n * @method changeObjAlphasInLocation\n * @param value {number} alpha value, should be between 0 and 1\n * @param pos {TColumnRowPair} position object including row and column coordinates\n */\n public changeObjAlphasInLocation(value: number, pos: TColumnRowPair): void {\n const a = this._objArray[pos.r][pos.c];\n if (a) {\n const l = a.length;\n for (let i = 0; i < l; i++) {\n if (!a[i].isFloorObject && !a[i].noTransparency) {\n a[i].alpha = value;\n }\n }\n }\n }\n /**\n * Sets a map-object's location and logically moves it to the new location.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param obj {ObjectView} map-object to be moved\n * @param obj.mapPos {Object} object including r and c coordinates\n * @param obj.mapPos.c {number} the column index of the map location\n * @param obj.mapPos.r {number} the row index of the map location\n * @param pos {TColumnRowPair} position object including row and column coordinates\n */\n private arrangeObjLocation(obj: ObjectView, pos: TColumnRowPair): void {\n this.removeObjRefFromLocation(obj, obj.mapPos);\n this.addObjRefToLocation(obj, pos);\n\n obj.mapPos = { c: pos.c, r: pos.r };\n }\n /**\n * Sets occlusion transparencies according to given map-object's location.\n * This method only works for user-controllable object.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param obj {ObjectView} current controllable map-object\n * @param prevPos {TColumnRowPair} previous location of the map-object in terms of row and column coordinates\n * @param pos {TColumnRowPair} new location of the map-object in terms of row and column coordinates\n */\n private arrangeObjTransparencies(obj: ObjectView, prevPos: TColumnRowPair, pos: TColumnRowPair): void {\n if (this._config.changeTransparencies) {\n if (this._currentControllable === obj) {\n if (prevPos.c > 0) {\n this.changeObjAlphasInLocation(1, {\n c: prevPos.c - 1,\n r: prevPos.r,\n });\n }\n if (prevPos.c > 0 && prevPos.r < this._mapSizeR - 1) {\n this.changeObjAlphasInLocation(1, {\n c: prevPos.c - 1,\n r: prevPos.r + 1,\n });\n }\n if (prevPos.r < this._mapSizeR - 1) {\n this.changeObjAlphasInLocation(1, {\n c: prevPos.c,\n r: prevPos.r + 1,\n });\n }\n\n if (pos.c > 0) {\n this.changeObjAlphasInLocation(0.7, {\n c: pos.c - 1,\n r: pos.r,\n });\n }\n if (pos.c > 0 && pos.r < this._mapSizeR - 1) {\n this.changeObjAlphasInLocation(0.7, {\n c: pos.c - 1,\n r: pos.r + 1,\n });\n }\n if (pos.r < this._mapSizeR - 1) {\n this.changeObjAlphasInLocation(0.7, {\n c: pos.c,\n r: pos.r + 1,\n });\n }\n }\n\n // TODO: check if there is a way not to update main character alpha each time\n obj.alpha = 1;\n }\n }\n /**\n * Arranges depths (z-index) of the map-objects starting from the given location.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param pos {TColumnRowPair} position object including row and column coordinates\n */\n private arrangeDepthsFromLocation(pos: TColumnRowPair): void {\n let a, i, j, k;\n for (i = pos.r; i < this._mapSizeR; i++) {\n for (j = pos.c; j >= 0; j--) {\n a = this._objArray[i][j];\n if (a) {\n for (k = 0; k < a.length; k++) {\n if (!a[k].isFloorObject) {\n this._objContainer.addChild(a[k]);\n }\n }\n }\n }\n }\n }\n /**\n * Clears the highlight for the old path and highlights the new path on map.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param currentPath {Array(GridNode)} the old path to clear the highlight from\n * @param newPath {Array(GridNode)} the new path to highlight\n */\n private arrangePathHighlight(currentPath: GridNode[], newPath: GridNode[]): void {\n let i: number, tile: TileView, pathItem: GridNode;\n if (currentPath) {\n for (i = 0; i < currentPath.length; i++) {\n pathItem = currentPath[i];\n if (!newPath || newPath.indexOf(pathItem) === -1) {\n tile = this._tileArray[pathItem.mapPos.r][pathItem.mapPos.c];\n tile.setHighlighted(false, !this._config.tileHighlightAnimated);\n }\n }\n }\n if (newPath) {\n for (i = 0; i < newPath.length; i++) {\n pathItem = newPath[i];\n if (!currentPath || currentPath.indexOf(pathItem) === -1) {\n tile = this._tileArray[pathItem.mapPos.r][pathItem.mapPos.c];\n tile.setHighlighted(true, !this._config.tileHighlightAnimated);\n }\n }\n }\n }\n /**\n * Stops a moving object.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param obj {IMovable} map-object to be moved on path\n */\n private stopObject(obj: IMovable): void {\n obj.currentPath = null;\n obj.currentTarget = null;\n obj.currentTargetTile = null;\n this.moveEngine.removeMovable(obj);\n }\n /**\n * Moves the specified map-object through a path.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param obj {IMovable} map-object to be moved on path\n * @param path {Array(GridNode)} path to move object on\n * @param speed {number} speed of the map-object to be used during movement, if not defined it uses previous speed or the MoveEngine's default speed, default null\n */\n private moveObjThrough(obj: IMovable, path: GridNode[], speed: number = null): void {\n if (this._config.instantObjectRelocation) {\n const tile = this._tileArray[path[0].mapPos.r][path[0].mapPos.c];\n obj.position.x = tile.position.x;\n obj.position.y = tile.position.y + this.tileHalfHeight;\n this.arrangeObjTransparencies(obj, obj.mapPos, tile.mapPos);\n this.arrangeObjLocation(obj, tile.mapPos);\n this.arrangeDepthsFromLocation(tile.mapPos);\n } else {\n if (this._config.highlightPath && this._currentControllable === obj) {\n this.arrangePathHighlight(obj.currentPath, path);\n }\n\n if (obj.currentTarget) {\n // trace(\"Object has a target, update the path with the new one\");\n // this.moveEngine.addNewPathToObject(obj, path, speed);\n this.stopObject(obj);\n }\n\n this.moveEngine.prepareForMove(obj, path, speed);\n\n obj.currentTargetTile = obj.currentPath[obj.currentPathStep];\n\n this.onObjMoveStepBegin(obj, obj.currentPath[obj.currentPathStep].mapPos);\n }\n }\n /**\n * Sets up the engine at the beginning of each tile change move for the specified object\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param obj {IMovable} map-object that is being moved\n * @param pos {TColumnRowPair} position object including row and column coordinates\n * @return {boolean} if the target tile was available and map-object has moved\n */\n private onObjMoveStepBegin(obj: IMovable, pos: TColumnRowPair): boolean {\n // trace(\"onObjMoveStepBegin\");\n // Note that mapPos is being updated prior to movement\n\n obj.currentDirection = getDirBetween(obj.mapPos.r, obj.mapPos.c, pos.r, pos.c);\n\n obj.changeVisualToDirection(obj.currentDirection, true);\n\n // check if the next target pos is still empty\n if (!this._pathFinding.isCellFilled(pos.c, pos.r)) {\n // pos is movable\n // this.arrangeObjTransparencies(obj, obj.mapPos, pos);\n // this.arrangeObjLocation(obj, pos);\n // this.arrangeDepthsFromLocation(obj.mapPos);\n\n // if there is other object(s) on the target tile, notify the game\n // const objects = this.getObjectsAtLocation(pos);\n // if (objects && objects.length > 1)\n // {\n // if (this._config.otherObjectsOnTheNextTileCallback) { this._config.otherObjectsOnTheNextTileCallback( obj, objects ); }\n // }\n\n this.moveEngine.setMoveParameters(obj, pos);\n\n this.moveEngine.addMovable(obj);\n\n return true;\n } else {\n // pos is NOT movable\n this.moveEngine.removeMovable(obj);\n this.checkAndMoveObjectToLocation(obj, obj.currentPath[0].mapPos);\n\n return false;\n }\n }\n /**\n * Sets up the engine at the end of each tile change move for the specified object\n *\n * @method\n * @function\n * @public\n * @internal\n *\n * @param obj {IMovable} map-object that is being moved\n */\n public onObjMoveStepEnd(obj: IMovable): void {\n //trace(\"onObjMoveStepEnd\");\n\n obj.currentPathStep--;\n obj.currentTarget = null;\n obj.currentTargetTile = null;\n const pathEnded = 0 > obj.currentPathStep;\n this.moveEngine.removeMovable(obj);\n\n if (!pathEnded) {\n if (this._config.checkPathOnEachTile) {\n this.checkAndMoveObjectToLocation(obj, obj.currentPath[0].mapPos);\n } else {\n obj.currentPath.splice(obj.currentPath.length - 1, 1);\n this.moveObjThrough(obj, obj.currentPath);\n }\n } else {\n // reached to the end of the path\n obj.changeVisualToDirection(obj.currentDirection, false);\n }\n\n if (this._currentControllable === obj) {\n const tile = this._tileArray[obj.mapPos.r][obj.mapPos.c];\n tile.setHighlighted(false, !this._config.tileHighlightAnimated);\n\n // if (this._config.followCharacter) { this.centralizeToLocation(obj.mapPos.c, obj.mapPos.r); }\n }\n\n if (pathEnded && this._config.objectReachedDestinationCallback) {\n this._config.objectReachedDestinationCallback(obj);\n }\n }\n\n /**\n * Checks and follows a character\n *\n * @method\n * @function\n * @public\n * @internal\n *\n * @param obj {IMovable} map-object to check if it is being followed\n */\n public checkForFollowCharacter(obj: IMovable): void {\n if (this._config.followCharacter && this._currentControllable === obj) {\n this._currentFocusLocation = { c: obj.mapPos.c, r: obj.mapPos.r };\n const px = this._externalCenter.x - obj.position.x * this._currentScale;\n const py = this._externalCenter.y - obj.position.y * this._currentScale;\n // this.centralizeToPoint(px, py, true);\n this.moveEngine.addTween(\n this._mapContainer.position as unknown as ITweenTarget,\n 0.1,\n { x: px, y: py },\n 0,\n 'easeOut',\n true\n );\n }\n }\n\n /**\n * Checks if a map-object changes the tile it is on.\n *\n * @method\n * @function\n * @public\n * @internal\n *\n * @param obj {IMovable} map-object to be checked\n */\n public checkForTileChange(obj: IMovable): void {\n if (this._config.objectUpdateCallback) {\n this._config.objectUpdateCallback(obj);\n }\n\n const pos = { x: obj.position.x, y: obj.position.y - this.tileHalfHeight };\n // const tile = this._tileArray[obj.mapPos.r][obj.mapPos.c];\n const tile = this._tileArray[obj.currentTargetTile.mapPos.r][obj.currentTargetTile.mapPos.c];\n // move positions to parent scale\n const vertices = [];\n for (let i = 0; i < tile.vertices.length; i++) {\n vertices[i] = [tile.vertices[i][0] + tile.position.x, tile.vertices[i][1] + tile.position.y];\n }\n\n if (obj.currentTargetTile.mapPos.r !== obj.mapPos.r || obj.currentTargetTile.mapPos.c !== obj.mapPos.c) {\n if (isInPolygon(pos, vertices)) {\n this.arrangeObjTransparencies(obj, obj.mapPos, obj.currentTargetTile.mapPos);\n this.arrangeObjLocation(obj, obj.currentTargetTile.mapPos);\n this.arrangeDepthsFromLocation(obj.mapPos);\n\n // if there is other object(s) on the target tile, notify the game\n const objects = this.getObjectsAtLocation(obj.currentTargetTile.mapPos);\n if (objects && objects.length > 1) {\n if (this._config.otherObjectsOnTheNextTileCallback) {\n this._config.otherObjectsOnTheNextTileCallback(obj, objects);\n }\n }\n }\n }\n }\n\n /**\n * Searches and returns a path between two locations if there is one.\n *\n * @method\n * @function\n * @public\n *\n * @param from {TColumnRowPair} object including row and column coordinates of the source location\n * @param to {TColumnRowPair} object including row and column coordinates of the target location\n *\n * @return {Array(Object)} an array of path items defining the path\n */\n public getPath(from: TColumnRowPair, to: TColumnRowPair): GridNode[] {\n if (this._pathFinding) {\n return this._pathFinding.solve(from.c, from.r, to.c, to.r);\n } else {\n throw new Error(\"Path finding hasn't been initialized yet!\");\n }\n }\n /**\n * Checks for a path and moves the map-object on map if there is an available path\n *\n * @method\n * @function\n * @public\n *\n * @param obj {ObjectView} map-object that is being moved\n * @param tile {TileView} target map-tile or any custom object that has 'mapPos' and 'isMovableTo' defined\n * @param speed {number} speed of the map-object to be used during movement, if not defined it uses previous speed or the MoveEngine's default speed, default null\n * @return {boolean} if there is an available path to move to the target tile\n */\n public checkAndMoveObjectToTile(obj: ObjectView, tile: TileView, speed: number = null): boolean {\n if (tile.isMovableTo) {\n return this.checkAndMoveObjectToLocation(obj, tile.mapPos, speed);\n }\n return false;\n }\n /**\n * Checks for a path and moves the map-object on map if there is an available path\n *\n * @method\n * @function\n * @public\n *\n * @param obj {ObjectView} map-object that is being moved\n * @param pos {TColumnRowPair} object including row and column coordinates for the target location\n * @param speed {number} speed of the map-object to be used during movement, if not defined it uses previous speed or the MoveEngine's default speed, default null\n * @return {boolean} if there is an available path to move to the target tile\n */\n public checkAndMoveObjectToLocation(obj: ObjectView, pos: TColumnRowPair, speed: number = null): boolean {\n const path = this.getPath(obj.mapPos, pos);\n if (path) {\n // begin moving process\n this.moveObjThrough(obj as IMovable, path, speed);\n\n return path.length > 0;\n }\n return false;\n }\n /**\n * Moves the current controllable map-object to a location if available.\n *\n * @method\n * @function\n * @public\n *\n * @param pos {TColumnRowPair} object including row and column coordinates for the target location\n * @param speed {number} speed of the map-object to be used during movement, if not defined it uses previous speed or the MoveEngine's default speed, default null\n * @return {boolean} if there is an available path to move to the target tile\n */\n public moveCurrentControllableToLocation(pos: TColumnRowPair, speed: number = null): boolean {\n if (!this._currentControllable) {\n throw new Error('TRAVISO: _currentControllable is not defined!');\n }\n return this.checkAndMoveObjectToLocation(this._currentControllable, pos, speed);\n }\n /**\n * Moves the current controllable map-object to one of the adjacent available tiles of the map-object specified.\n *\n * @method\n * @function\n * @public\n *\n * @param obj {ObjectView} target map-object\n * @param speed {number} speed of the map-object to be used during movement, if not defined it uses previous speed or the MoveEngine's default speed, default null\n * @return {boolean} if there is an available path to move to the target map-object\n */\n public moveCurrentControllableToObj(obj: ObjectView, speed: number = null): boolean {\n if (!this._currentControllable) {\n throw new Error('TRAVISO: _currentControllable is not defined!');\n }\n // check if there is a preferred interaction point\n if (obj.currentInteractionOffset) {\n const targetPos = {\n c: obj.mapPos.c + obj.currentInteractionOffset.c,\n r: obj.mapPos.r + obj.currentInteractionOffset.r,\n };\n if (this.checkAndMoveObjectToLocation(this._currentControllable, targetPos, speed)) {\n return true;\n }\n }\n const cellArray = this._pathFinding.getAdjacentOpenCells(\n obj.mapPos.c,\n obj.mapPos.r,\n obj.columnSpan,\n obj.rowSpan\n );\n let tile: TileView;\n let minLength = 3000;\n let path, minPath, tempFlagHolder;\n for (let i = 0; i < cellArray.length; i++) {\n tile = this._tileArray[cellArray[i].mapPos.r][cellArray[i].mapPos.c];\n if (tile) {\n if (\n tile.mapPos.c === this._currentControllable.mapPos.c &&\n tile.mapPos.r === this._currentControllable.mapPos.r\n ) {\n // already next to the object, do nothing\n this.arrangePathHighlight((this._currentControllable as IMovable).currentPath, null);\n this.stopObject(this._currentControllable as IMovable);\n tempFlagHolder = this._config.instantObjectRelocation;\n this._config.instantObjectRelocation = true;\n this.moveObjThrough(this._currentControllable as IMovable, [\n new GridNode(tile.mapPos.c, tile.mapPos.r, 1),\n ]);\n this._config.instantObjectRelocation = tempFlagHolder;\n this._currentControllable.changeVisualToDirection(\n this._currentControllable.currentDirection,\n false\n );\n if (this._config.objectReachedDestinationCallback) {\n this._config.objectReachedDestinationCallback(this._currentControllable);\n }\n return true;\n }\n path = this.getPath(this._currentControllable.mapPos, tile.mapPos);\n if (path && path.length < minLength) {\n minLength = path.length;\n minPath = path;\n }\n }\n }\n\n if (minPath) {\n this.moveObjThrough(this._currentControllable as IMovable, minPath, speed);\n return true;\n }\n return false;\n }\n /**\n * Finds the nearest tile to the point given in the map's local scope.\n *\n * @method\n * @function\n * @public\n *\n * @param lp {TPositionPair} Point to check\n * @return {TileView} The nearest map-tile if there is one. Otherwise `null`\n */\n public getTileFromLocalPos(lp: TPositionPair): TileView {\n let closestTile: TileView = null;\n if (isInPolygon(lp, this._mapVertices)) {\n // Using nearest point instead of checking polygon vertices for each tile. Should be faster...\n // NOTE: there is an ignored bug (for better performance) that tile is not selected when u click on the far corner\n const thresh = this.tileHalfWidth / 2;\n let tile, i, j, dist;\n let closestDist = 3000;\n for (i = 0; i < this._mapSizeR; i++) {\n for (j = 0; j < this._mapSizeC; j++) {\n tile = this._tileArray[i][j];\n if (tile) {\n dist = getDist(lp, tile.position);\n if (dist < closestDist) {\n closestDist = dist;\n closestTile = tile;\n if (dist < thresh) {\n break;\n }\n }\n }\n }\n }\n }\n return closestTile;\n }\n /**\n * Checks if an interaction occurs using the interaction data coming from PIXI.\n * If there is any interaction starts necessary movements or performs necessary callbacks.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param interactionData {PIXI.InteractionData} interaction data coming from PIXI\n */\n private checkForTileClick(interactionData: InteractionData): void {\n const lp = this._mapContainer.toLocal(interactionData.global);\n const closestTile = this.getTileFromLocalPos(lp);\n if (closestTile) {\n const a = this._objArray[closestTile.mapPos.r][closestTile.mapPos.c];\n if (a) {\n for (let k = 0; k < a.length; k++) {\n if (a[k].isInteractive) {\n if (this._config.objectSelectCallback) {\n this._config.objectSelectCallback(a[k]);\n }\n break;\n }\n // TODO CHECK: this might cause issues when there is one movable and one not movable object on the same tile\n else if (a[k].isMovableTo) {\n if (\n this._config.dontAutoMoveToTile ||\n !this._currentControllable ||\n this.checkAndMoveObjectToTile(this._currentControllable, closestTile)\n ) {\n if (this._config.highlightTargetTile) {\n closestTile.setHighlighted(true, !this._config.tileHighlightAnimated);\n }\n if (this._config.tileSelectCallback) {\n this._config.tileSelectCallback(closestTile.mapPos.r, closestTile.mapPos.c);\n }\n break;\n }\n }\n }\n } else if (\n this._config.dontAutoMoveToTile ||\n !this._currentControllable ||\n this.checkAndMoveObjectToTile(this._currentControllable, closestTile)\n ) {\n if (this._config.highlightTargetTile) {\n closestTile.setHighlighted(true, !this._config.tileHighlightAnimated);\n }\n if (this._config.tileSelectCallback) {\n this._config.tileSelectCallback(closestTile.mapPos.r, closestTile.mapPos.c);\n }\n }\n }\n }\n /**\n * Enables mouse/touch interactions.\n *\n * @method\n * @function\n * @public\n */\n public enableInteraction(): void {\n // this.mousedown = this.touchstart = this.onMouseDown.bind(this);\n // this.mousemove = this.touchmove = this.onMouseMove.bind(this);\n // this.mouseup = this.mouseupout = this.touchend = this.onMouseUp.bind(this);\n this.on('pointerdown', this.onMouseDown_binded)\n .on('pointerup', this.onMouseUp_binded)\n // .on('pointerout', this.onMouseUp_binded)\n .on('pointerupoutside', this.onMouseUp_binded)\n .on('pointermove', this.onMouseMove_binded);\n this.interactive = true;\n }\n /**\n * Disables mouse/touch interactions.\n *\n * @method\n * @function\n * @public\n */\n public disableInteraction(): void {\n // this.mousedown = this.touchstart = null;\n // this.mousemove = this.touchmove = null;\n // this.mouseup = this.mouseupout = this.touchend = null;\n this.off('pointerdown', this.onMouseDown_binded)\n .off('pointerup', this.onMouseUp_binded)\n // .off('pointerout', this.onMouseUp_binded)\n .off('pointerupoutside', this.onMouseUp_binded)\n .off('pointermove', this.onMouseMove_binded);\n this.interactive = true;\n this._dragging = false;\n }\n /**\n * Checks if the given point is inside the masked area if there is a mask defined.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param p {TPositionPair} point to check\n * @return {boolean} if the point is inside the masked area\n */\n private isInteractionInMask(p: TPositionPair): boolean {\n if (this._config.useMask) {\n if (\n p.x < this._posFrame.x ||\n p.y < this._posFrame.y ||\n p.x > this._posFrame.x + this._posFrame.w ||\n p.y > this._posFrame.y + this._posFrame.h\n ) {\n return false;\n }\n }\n return true;\n }\n // ******************** START: MOUSE INTERACTIONS **************************** //\n /**\n * Handler function for mouse-down event.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param event {InteractionEvent} interaction event object\n */\n private onMouseDown(event: InteractionEvent): void {\n const globalPos = event.data.global;\n if (!this._dragging && this.isInteractionInMask(globalPos)) {\n this._dragging = true;\n //this.mouseDownTime = new Date();\n this._dragInitStartingX = this._dragPrevStartingX = globalPos.x;\n this._dragInitStartingY = this._dragPrevStartingY = globalPos.y;\n }\n }\n /**\n * Handler function for mouse-move event.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param event {InteractionEvent} interaction event object\n */\n private onMouseMove(event: InteractionEvent): void {\n if (this._dragging && this._config.mapDraggable) {\n const globalPos = event.data.global;\n this._mapContainer.position.x += globalPos.x - this._dragPrevStartingX;\n this._mapContainer.position.y += globalPos.y - this._dragPrevStartingY;\n this._dragPrevStartingX = globalPos.x;\n this._dragPrevStartingY = globalPos.y;\n }\n }\n /**\n * Handler function for mouse-up event.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param event {InteractionEvent} interaction event object\n */\n private onMouseUp(event: InteractionEvent): void {\n if (this._dragging) {\n this._dragging = false;\n //const passedTime = (new Date()) - this.mouseDownTime;\n const distX = event.data.global.x - this._dragInitStartingX;\n const distY = event.data.global.y - this._dragInitStartingY;\n\n if (Math.abs(distX) < 5 && Math.abs(distY) < 5) {\n // NOT DRAGGING IT IS A CLICK\n this.checkForTileClick(event.data);\n }\n }\n }\n // ********************* END: MOUSE INTERACTIONS **************************** //\n /**\n * Repositions the content according to user settings. Call this method\n * whenever you want to change the size or position of the engine.\n *\n * @method\n * @function\n * @public\n *\n * @param posFrame {TPositionFrame} frame to position the engine, default is the previously set posFrame and if not set, it is `{ x : 0, y : 0, w : 800, h : 600 }`\n */\n public repositionContent(posFrame: TPositionFrame = null): void {\n trace('EngineView repositionContent');\n\n posFrame = posFrame || this._posFrame || { x: 0, y: 0, w: 800, h: 600 };\n\n this.position.x = posFrame.x;\n this.position.y = posFrame.y;\n\n this._externalCenter = {\n x: posFrame.w >> 1,\n y: posFrame.h >> 1,\n };\n this.centralizeToCurrentFocusLocation(true);\n\n if (this._bg) {\n this._bg.clear();\n // this._bg.lineStyle(2, 0x000000, 1);\n this._bg.beginFill(this._config.backgroundColor, 1.0);\n this._bg.drawRect(0, 0, posFrame.w, posFrame.h);\n this._bg.endFill();\n }\n\n if (this._mapMask && this._mapContainer) {\n this._mapMask.clear();\n this._mapMask.beginFill(0x000000);\n this._mapMask.drawRect(0, 0, posFrame.w, posFrame.h);\n this._mapMask.endFill();\n\n this._mapContainer.mask = this._mapMask;\n }\n\n this._posFrame = posFrame;\n }\n /**\n * Clears all references and stops all animations inside the engine.\n * Call this method when you want to get rid of an engine instance.\n *\n * @method\n * @function\n * @public\n */\n public destroy(): void {\n trace('EngineView destroy');\n\n this.disableInteraction();\n\n this.moveEngine.destroy();\n this.moveEngine = null;\n\n let item, i, j, k;\n for (i = 0; i < this._mapSizeR; i++) {\n for (j = this._mapSizeC - 1; j >= 0; j--) {\n item = this._tileArray[i][j];\n if (item) {\n item.destroy();\n // this._groundContainer.removeChild(item);\n }\n this._tileArray[i][j] = null;\n\n item = this._objArray[i][j];\n if (item) {\n for (k = 0; k < item.length; k++) {\n if (item[k]) {\n item[k].destroy();\n // this._objContainer.removeChild(item[k]);\n }\n item[k] = null;\n }\n }\n this._objArray[i][j] = null;\n }\n }\n item = null;\n\n this._pathFinding.destroy();\n this._pathFinding = null;\n\n this._currentControllable = null;\n this._tileArray = null;\n this._objArray = null;\n this._bg = null;\n this._groundContainer = null;\n this._objContainer = null;\n\n if (this._mapContainer) {\n this._mapContainer.mask = null;\n this.removeChild(this._mapContainer);\n this._mapContainer = null;\n }\n if (this._mapMask) {\n this.removeChild(this._mapMask);\n this._mapMask = null;\n }\n\n this._config = null;\n this.mapData.groundMapData = null;\n this.mapData.objectsMapData = null;\n this.mapData.objects = null;\n this.mapData.tiles = null;\n this.mapData = null;\n }\n\n // Externally modifiable properties for EngineView\n /**\n * specifies whether to zoom instantly or with a tween animation\n * @property\n * @default false\n */\n public get instantCameraZoom(): boolean {\n return this._config.instantCameraZoom;\n }\n public set instantCameraZoom(value: boolean) {\n this._config.instantCameraZoom = value;\n }\n /**\n * defines if the camera will follow the current controllable or not\n * @property\n * @default true\n */\n public get followCharacter(): boolean {\n return this._config.followCharacter;\n }\n public set followCharacter(value: boolean) {\n this._config.followCharacter = value;\n }\n /**\n * specifies whether the camera moves instantly or with a tween animation to the target location\n * @property\n * @default false\n */\n public get instantCameraRelocation(): boolean {\n return this._config.instantCameraRelocation;\n }\n public set instantCameraRelocation(value: boolean) {\n this._config.instantCameraRelocation = value;\n }\n /**\n * specifies whether the map-objects will be moved to target location instantly or with an animation\n * @property\n * @default false\n */\n public get instantObjectRelocation(): boolean {\n return this._config.instantObjectRelocation;\n }\n public set instantObjectRelocation(value: boolean) {\n this._config.instantObjectRelocation = value;\n }\n /**\n * make objects transparent when the controllable is behind them\n * @property\n * @default true\n */\n public get changeTransparencies(): boolean {\n return this._config.changeTransparencies;\n }\n public set changeTransparencies(value: boolean) {\n this._config.changeTransparencies = value;\n }\n /**\n * highlight the path when the current controllable moves on the map\n * @property\n * @default true\n */\n public get highlightPath(): boolean {\n return this._config.highlightPath;\n }\n public set highlightPath(value: boolean) {\n this._config.highlightPath = value;\n }\n /**\n * Highlight the target tile when the current controllable moves on the map\n * @property\n * @default true\n */\n public get highlightTargetTile(): boolean {\n return this._config.highlightTargetTile;\n }\n public set highlightTargetTile(value: boolean) {\n this._config.highlightTargetTile = value;\n }\n /**\n * animate the tile highlights\n * @property\n * @default true\n */\n public get tileHighlightAnimated(): boolean {\n return this._config.tileHighlightAnimated;\n }\n public set tileHighlightAnimated(value: boolean) {\n this._config.tileHighlightAnimated = value;\n }\n /**\n * When a tile selected don't move the controllable immediately but still call 'tileSelectCallback'\n * @property\n * @default false\n */\n public get dontAutoMoveToTile(): boolean {\n return this._config.dontAutoMoveToTile;\n }\n public set dontAutoMoveToTile(value: boolean) {\n this._config.dontAutoMoveToTile = value;\n }\n /**\n * Engine looks for a path every time an object moves to a new tile on the path\n * (set to false if you don't have moving objects other then your controllable on your map)\n * @property\n * @default true\n */\n public get checkPathOnEachTile(): boolean {\n return this._config.checkPathOnEachTile;\n }\n public set checkPathOnEachTile(value: boolean) {\n this._config.checkPathOnEachTile = value;\n }\n /**\n * enable dragging the map with touch-and-touchmove or mousedown-and-mousemove on the map\n * @property\n * @default true\n */\n public get mapDraggable(): boolean {\n return this._config.mapDraggable;\n }\n public set mapDraggable(value: boolean) {\n this._config.mapDraggable = value;\n }\n /**\n * callback function that will be called once everything is loaded and engine instance is ready\n * @property\n * @default null\n */\n public get engineInstanceReadyCallback(): (engineInstance: EngineView) => unknown {\n return this._config.engineInstanceReadyCallback;\n }\n public set engineInstanceReadyCallback(value: (engineInstance: EngineView) => unknown) {\n this._config.engineInstanceReadyCallback = value;\n }\n /**\n * callback function that will be called when a tile is selected. Params will be the row and column indexes of the tile selected.\n * @property\n * @default null\n */\n public get tileSelectCallback(): (r: number, c: number) => unknown {\n return this._config.tileSelectCallback;\n }\n public set tileSelectCallback(value: (r: number, c: number) => unknown) {\n this._config.tileSelectCallback = value;\n }\n /**\n * callback function that will be called when a tile with an interactive map-object on it is selected. Call param will be the object selected.\n * @property\n * @default null\n */\n public get objectSelectCallback(): (objectView: ObjectView) => unknown {\n return this._config.objectSelectCallback;\n }\n public set objectSelectCallback(value: (objectView: ObjectView) => unknown) {\n this._config.objectSelectCallback = value;\n }\n /**\n * callback function that will be called when any moving object reaches its destination. Call param will be the moving object itself.\n * @property\n * @default null\n */\n public get objectReachedDestinationCallback(): (objectView: ObjectView) => unknown {\n return this._config.objectReachedDestinationCallback;\n }\n public set objectReachedDestinationCallback(value: (objectView: ObjectView) => unknown) {\n this._config.objectReachedDestinationCallback = value;\n }\n /**\n * callback function that will be called when any moving object is in move and there are other objects on the next tile. Call params will be the moving object and an array of objects on the next tile.\n * @property\n * @default null\n */\n public get otherObjectsOnTheNextTileCallback(): (\n objectView: ObjectView,\n otherObjectViews: ObjectView[]\n ) => unknown {\n return this._config.otherObjectsOnTheNextTileCallback;\n }\n public set otherObjectsOnTheNextTileCallback(\n value: (objectView: ObjectView, otherObjectViews: ObjectView[]) => unknown\n ) {\n this._config.otherObjectsOnTheNextTileCallback = value;\n }\n /**\n * callback function that will be called every time an objects direction or position changed\n * @property\n * @default null\n */\n public get objectUpdateCallback(): (objectView: ObjectView) => unknown {\n return this._config.objectUpdateCallback;\n }\n public set objectUpdateCallback(value: (objectView: ObjectView) => unknown) {\n this._config.objectUpdateCallback = value;\n }\n /**\n * alpha value for the tile highlight stroke (this will be overridden if a highlight-image is defined)\n * @property\n * @default 1.0\n */\n public get tileHighlightStrokeAlpha(): number {\n return this._config.tileHighlightStrokeAlpha;\n }\n public set tileHighlightStrokeAlpha(value: number) {\n this._config.tileHighlightStrokeAlpha = value;\n }\n /**\n * color code for the tile highlight stroke (this will be overridden if a highlight-image is defined)\n * @property\n * @default 0xFFFFFF\n */\n public get tileHighlightStrokeColor(): number {\n return this._config.tileHighlightStrokeColor;\n }\n public set tileHighlightStrokeColor(value: number) {\n this._config.tileHighlightStrokeColor = value;\n }\n /**\n * alpha value for the tile highlight fill (this will be overridden if a highlight-image is defined)\n * @property\n * @default 1.0\n */\n public get tileHighlightFillAlpha(): number {\n return this._config.tileHighlightFillAlpha;\n }\n public set tileHighlightFillAlpha(value: number) {\n this._config.tileHighlightFillAlpha = value;\n }\n /**\n * color code for the tile highlight fill (this will be overridden if a highlight-image is defined)\n * @property\n * @default 0x80d7ff\n */\n public get tileHighlightFillColor(): number {\n return this._config.tileHighlightFillColor;\n }\n public set tileHighlightFillColor(value: number) {\n this._config.tileHighlightFillColor = value;\n }\n}\n","let saidHello = false;\nconst VERSION = '$_VERSION';\n\n/**\n * Skips the hello message of renderers that are created after this is run.\n *\n * @memberof TRAVISO\n * @for TRAVISO\n *\n * @function\n * @method\n * @static\n * @public\n */\nexport function skipHello(): void {\n saidHello = true;\n}\n\n/**\n * Logs out the version information for this running instance of TRAVISO.\n * If you don't want to see this message you can run `TRAVISO.skipHello()` before\n * creating your engine.\n *\n * @memberof TRAVISO\n * @for TRAVISO\n *\n * @function\n * @method\n * @static\n * @public\n */\nexport function sayHello(): void {\n if (saidHello) {\n return;\n }\n\n if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1) {\n const args = [\n `\\n %c %c %c Traviso.js - ${VERSION} %c %c http://www.travisojs.com/ %c \\n\\n`,\n 'background: #18bc9c; padding:5px 0;',\n 'background: #18bc9c; padding:5px 0;',\n 'color: #18bc9c; background: #030307; padding:5px 0;',\n 'background: #18bc9c; padding:5px 0;',\n 'background: #5ad2ba; padding:5px 0;',\n 'background: #18bc9c; padding:5px 0;',\n ];\n\n self.console.log(...args);\n } else if (self.console) {\n self.console.log(`Traviso.js ${VERSION} - http://www.travisojs.com/`);\n }\n\n saidHello = true;\n}\n","/**\n * String of the current TRAVISO version.\n *\n * @memberof TRAVISO\n * @for TRAVISO\n *\n * @property\n * @static\n * @public\n * @constant\n */\n\nexport const VERSION: Readonly = '$_VERSION';\n","import { TEngineConfiguration, EngineView } from './map/EngineView';\nimport { sayHello } from './utils/hello';\nimport { enableDisableLogging, trace } from './utils/trace';\nimport { VERSION } from './version';\n\n/**\n * Type declaration for global traviso configuration.\n */\nexport type TTravisoConfiguration = {\n /**\n * Determines if TRAVISO can log helper text.\n * @default false\n */\n logEnabled: boolean;\n};\n\n/**\n * Main TRAVISO namespace.\n *\n * @namespace TRAVISO\n */\nexport * from './version';\nexport * from './map/EngineView';\nexport { TileView } from './map/TileView';\nexport { ObjectView } from './map/ObjectView';\nexport { skipHello } from './utils/hello';\nexport * from './utils/trace';\nexport { existy, mathMap, dotProduct, getUnit, getDist, isInPolygon } from './utils/calculations';\nexport {\n TDirection,\n TDirections,\n DIRECTIONS,\n PF_ALGORITHMS,\n TPathFindingAlgorithms,\n TPathFindingAlgorithmID,\n} from './utils/constants';\nexport { TColumnRowPair, TPositionPair } from './utils/map';\n\n/**\n * Global configuration settings for traviso\n *\n * @property\n * @private\n * @internal\n */\nlet config: TTravisoConfiguration = {\n logEnabled: false,\n};\n\n/**\n * Flag defining whether traviso is set or not\n *\n * @property\n * @private\n * @internal\n */\nlet isReady: boolean = false;\n\n/**\n * Initializes traviso global settings if it hasn't been already.\n *\n * @method\n * @function\n * @internal\n *\n * @param globalConfig {TTravisoConfiguration} configuration object for the traviso engine\n */\nconst init = (globalConfig: TTravisoConfiguration): void => {\n // do necessary checks and assignments for global settings\n if (globalConfig) {\n config = {\n ...config,\n ...globalConfig,\n };\n config.logEnabled = enableDisableLogging(globalConfig.logEnabled);\n }\n if (isReady) {\n return;\n }\n isReady = true;\n sayHello();\n trace('Traviso initiated. (Version: ' + VERSION + ')');\n};\n\n/**\n * Creates and returns an isometric engine instance with the provided configuration.\n * Also initializes traviso global settings if it hasn't been already.\n *\n * @memberof TRAVISO\n * @for TRAVISO\n *\n * @method\n * @function\n * @public\n * @static\n *\n * @param instanceConfig {TEngineConfiguration} Configuration object for the isometric instance, required\n * @param globalConfig {TTravisoConfiguration} Configuration object for the traviso engine, default null\n *\n * @returns {EngineView} A new instance of the isometric engine\n */\nexport const getEngineInstance = (\n instanceConfig: TEngineConfiguration,\n globalConfig: TTravisoConfiguration = null\n): EngineView => {\n init(globalConfig);\n return new EngineView(instanceConfig);\n};\n\nexport {};\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__assign","assign","t","s","i","n","arguments","length","apply","existy","value","mathMap","v","min1","max1","min2","max2","noOutliers","getUnit","m","Math","sqrt","x","y","isInPolygon","gp","vertices","j","testY","testX","nVert","c","getDist","p1","p2","DIRECTIONS","O","S","SW","W","NW","N","NE","E","SE","RESERVED_TEXTURE_IDS","PF_ALGORITHMS","ASTAR_ORTHOGONAL","ASTAR_DIAGONAL","logEnabled","trace","self","console","log","enableDisableLogging","enabled","getObjectTextures","engine","objectType","visualId","objInfo","mapData","objects","textures","textureNames","Texture","from","Error","type","animSpeed","_super","_this","onContainerAnimComplete_delayed_binded","onContainerAnimComplete_delayed","bind","onContainerAnimComplete_binded","onContainerAnimComplete","_engine","info","key","f","nt","io","rowSpan","columnSpan","getObjectInfo","isMovableTo","isInteractive","interactive","interactiveChildren","isFloorObject","noTransparency","xAnchor","_textures","_interactionOffsets","currentInteractionOffset","idle","_container","AnimatedSprite","anchor","addChild","gotoAndStop","ObjectView","animationSpeed","direction","moving","stopOnFirstFrame","noLoop","onAnimComplete","changeVisual","dir","getStationaryDirVisualId","currentDirection","vId","loop","onContainerAnimCompleteCallback","onComplete","gotoAndPlay","objectUpdateCallback","setTimeout","Container","onHighlightTweenEnd_binded","onHighlightTweenEnd","halfHeight","tileHalfHeight","halfWidth","tileHalfWidth","tileInfo","tileType","tiles","movable","path","singleGroundImage","parseInt","getTileInfo","_tileGraphics","tileHighlightImage","_highlightedOverlay","Sprite","Graphics","clear","lineStyle","tileHighlightStrokeAlpha","tileHighlightStrokeColor","beginFill","tileHighlightFillColor","tileHighlightFillAlpha","moveTo","lineTo","endFill","scale","visible","TileView","isHighlighted","instant","_isHighlighted","ts","moveEngine","addTween","killTweensOf","linearTween","easeInQuad","easeOutQuad","easeInOutQuad","defaultSpeed","_defaultSpeed","_processFunc","run","_ticker","Ticker","add","start","MoveEngine","o","duration","vars","delay","easing","overwrite","e","prop","target","Number","easingFunc","totalFrames","_fps","currentFrame","_tweenTargets","indexOf","tweens","_activeForTweens","targetRemoved","idx","idx2","splice","len","_movables","_activeForMovables","speedUnit","speed","currentPath","currentTarget","currentPathStep","speedMagnitude","pos","px","getTilePosXFor","r","py","getTilePosYFor","position","currentReachThresh","ceil","_processFrame","prevPosition","onObjMoveStepEnd","checkForTileChange","checkForFollowCharacter","tt","removeTween","stop","removeAllMovables","removeAllTweens","weight","mapPos","GridNode","fromNeighbor","scoreFunction","content","BinaryHeap","element","push","sinkDown","result","end","pop","bubbleUp","node","parentN","parent_1","elemScore","conditionMet","child2N","child1N","swap","child1Score","child1","child2","mapSizeC","mapSizeR","options","nodes","diagonal","heuristic","PathFinding","HEURISTICS","manhattan","closest","grid","init","dirtyNodes","cleanNode","ret","rowDebug","row","l","graphString","join","originC","originR","destC","destR","search","cellC","cellR","sizeC","sizeR","cellArray","concat","neighbors","curr","parent","openHeap","getHeap","closestNode","h","size","currentNode","pathTo","closed","il","neighbor","isWall","gScore","g","getCost","beenVisited","visited","markDirty","rescoreElement","staticWeight","pos0","pos1","abs","D2","d1","d2","min","config","w","onMouseUp_binded","onMouseUp","onMouseDown_binded","onMouseDown","onMouseMove_binded","onMouseMove","_config","followCharacter","changeTransparencies","highlightPath","highlightTargetTile","tileHighlightAnimated","dontAutoMoveToTile","checkPathOnEachTile","mapDraggable","isoAngle","EngineView","DEFAULT_ISO_ANGLE","tileHeight","DEFAULT_TILE_H","setZoomParameters","minScale","maxScale","numberOfZoomLevels","initialZoomLevel","instantCameraZoom","tan","PI","loadAssetsAndData","mapDataPath","split","loader","Loader","assetsToLoad","load","assetsAndDataLoaded","arr","resources","data","initialControllableLocation","columnIndex","rowIndex","obj","objId","visual","interactionOffsets","oTextures","rows","groundMap","groundMapData","replace","objectsMap","objectsMapData","visuals","id","ipor","ipoc","frames","extension","numberOfFrames","startIndex","floor","onAllAssetsLoaded","_currentScale","_currentZoom","_posFrame","initialPositionFrame","_externalCenter","createMap","repositionContent","enableInteraction","engineInstanceReadyCallback","backgroundColor","_bg","useMask","_mapMask","_mapContainer","_groundContainer","_objContainer","groundImageSprite","tile","_mapSizeR","_mapSizeC","set","_tileArray","_objArray","_pathFinding","pathFindingType","pathFindingClosest","setCell","floorObjectFound","addObjRefToLocation","_currentControllable","a","k","_mapVertices","_mapVisualWidthReal","_mapVisualHeightReal","width","height","zoomTo","centralizeToLocation","centralizeToCurrentExternalCenter","show","addObjectToLocation","arrangeDepthsFromLocation","displayObject","removeChild","removeObjRefFromLocation","focusMapToLocation","zoomAmount","instantCameraRelocation","instantRelocate","_currentFocusLocation","_mapVisualWidthScaled","centralizeToPoint","minZoom","maxZoom","zoomIncrement","instantZoom","round","diff","oldScale","setScale","ratio","addObjRefToSingleLocation","setDynamicCell","removeObjRefFromSingleLocation","index","alpha","prevPos","changeObjAlphasInLocation","newPath","pathItem","setHighlighted","currentTargetTile","removeMovable","instantObjectRelocation","arrangeObjTransparencies","arrangeObjLocation","arrangePathHighlight","stopObject","prepareForMove","onObjMoveStepBegin","r1","c1","r2","c2","changeVisualToDirection","isCellFilled","checkAndMoveObjectToLocation","setMoveParameters","addMovable","pathEnded","moveObjThrough","objectReachedDestinationCallback","getObjectsAtLocation","otherObjectsOnTheNextTileCallback","to","solve","getPath","targetPos","minPath","tempFlagHolder","getAdjacentOpenCells","minLength","lp","closestTile","thresh","dist","closestDist","interactionData","toLocal","global","getTileFromLocalPos","objectSelectCallback","checkAndMoveObjectToTile","tileSelectCallback","on","off","_dragging","event","globalPos","isInteractionInMask","_dragInitStartingX","_dragPrevStartingX","_dragInitStartingY","_dragPrevStartingY","distX","distY","checkForTileClick","posFrame","centralizeToCurrentFocusLocation","drawRect","mask","item","disableInteraction","destroy","saidHello","VERSION","isReady","globalConfig","navigator","userAgent","toLowerCase","args","_a","sayHello","v1","v2","instanceConfig"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"traviso.min.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/utils/calculations.ts","../../src/utils/constants.ts","../../src/utils/trace.ts","../../src/utils/map.ts","../../src/map/ObjectView.ts","../../src/map/TileView.ts","../../src/utils/easing.ts","../../src/map/MoveEngine.ts","../../src/pathFinding/GridNode.ts","../../src/pathFinding/BinaryHeap.ts","../../src/pathFinding/PathFinding.ts","../../src/map/EngineView.ts","../../src/utils/hello.ts","../../src/version.ts","../../src/index.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.push(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.push(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import { DisplayObject } from 'pixi.js';\nimport { TPositionPair } from './map';\n\n/**\n * Checks if the value existy.\n *\n * @memberof TRAVISO\n * @for TRAVISO\n *\n * @method\n * @function\n * @public\n * @static\n *\n * @param value {unknown} value to check\n * @return {boolean} if the value existy or not\n */\nexport const existy = (value: unknown): boolean => {\n return value !== null && value !== undefined;\n};\n\n/**\n * Linear maps a given number in a source range to a target range\n *\n * @memberof TRAVISO\n * @for TRAVISO\n *\n * @method\n * @function\n * @public\n * @static\n *\n * @param v {number} value to map\n * @param min1 {number} minimum value of the source range\n * @param max1 {number} maximum value of the source range\n * @param min2 {number} minimum value of the target range\n * @param max2 {number} maximum value of the target range\n * @param noOutliers {boolean} If the outlier values won't be processed, default false\n * @return {number} mapped value according to target range\n */\nexport const mathMap = (\n v: number,\n min1: number,\n max1: number,\n min2: number,\n max2: number,\n noOutliers: boolean = false\n): number => {\n if (noOutliers) {\n if (v < min1) {\n return min2;\n } else if (v > max1) {\n return max2;\n }\n }\n return min2 + ((max2 - min2) * (v - min1)) / (max1 - min1);\n};\n\n/**\n * Produces dot product of two vectors.\n *\n * @memberof TRAVISO\n * @for TRAVISO\n *\n * @method\n * @function\n * @public\n * @static\n *\n * @param v1 {TPositionPair} first vector\n * @param v2 {TPositionPair} second vector\n * @return {number} dot product of two vectors\n */\nexport const dotProduct = (v1: TPositionPair, v2: TPositionPair): number => {\n return v1.x * v2.x + v1.y * v2.y;\n};\n\n/**\n * Produces unit vector of a given vector.\n *\n * @memberof TRAVISO\n * @for TRAVISO\n *\n * @method\n * @function\n * @public\n * @static\n *\n * @param v {TPositionPair} source vector\n * @return {TPositionPair} unit vector\n */\nexport const getUnit = (v: TPositionPair): TPositionPair => {\n const m = Math.sqrt(v.x * v.x + v.y * v.y);\n return { x: v.x / m, y: v.y / m };\n};\n\n/**\n * Checks if the given point is the polygon defined by the vertices.\n *\n * @memberof TRAVISO\n * @for TRAVISO\n *\n * @method\n * @function\n * @public\n * @static\n *\n * @param gp {TPositionPair} point to check\n * @param vertices {Array(Array(Number))} array containing the vertices of the polygon\n * @return {boolean} if the point is inside the polygon\n */\nexport const isInPolygon = (gp: TPositionPair, vertices: number[][]): boolean => {\n const testY = gp.y;\n const testX = gp.x;\n const nVert = vertices.length;\n let i,\n j,\n c = false;\n for (i = 0, j = nVert - 1; i < nVert; j = i++) {\n if (\n vertices[i][1] > testY !== vertices[j][1] > testY &&\n testX <\n ((vertices[j][0] - vertices[i][0]) * (testY - vertices[i][1])) / (vertices[j][1] - vertices[i][1]) +\n vertices[i][0]\n ) {\n c = !c;\n }\n }\n return c;\n};\n\n/**\n * Calculates the distance between two points.\n *\n * @memberof TRAVISO\n * @for TRAVISO\n *\n * @method\n * @function\n * @public\n * @static\n *\n * @param p1 {TPositionPair} first point\n * @param p2 {TPositionPair} second point\n * @return {number} the distance between two points\n */\nexport const getDist = (p1: TPositionPair, p2: TPositionPair): number => {\n return Math.sqrt((p2.x - p1.x) * (p2.x - p1.x) + (p2.y - p1.y) * (p2.y - p1.y));\n};\n\n/**\n * Calculates the global point with respect to given local point and scope.\n *\n * @method\n * @function\n * @private\n * @internal\n * @static\n *\n * @param lp {TPositionPair} local point\n * @param scope {PIXI.DisplayObject} local scope\n * @return {TPositionPair} global point\n */\nexport const localToGlobal = (lp: TPositionPair, scope: DisplayObject): TPositionPair => {\n let sX = scope.position.x + lp.x;\n let sY = scope.position.y + lp.y;\n\n let p = scope.parent;\n while (p) {\n sX += p.position.x;\n sY += p.position.y;\n p = p.parent;\n }\n\n return {\n x: sX,\n y: sY,\n };\n};\n\n/**\n * Calculates the local point with respect to given global point and local scope.\n *\n * @method\n * @function\n * @private\n * @internal\n * @static\n *\n * @param gp {TPositionPair} global point\n * @param scope {PIXI.DisplayObject} local scope\n * @return {TPositionPair} local point\n */\nexport const globalToLocal = (gp: TPositionPair, scope: DisplayObject): TPositionPair => {\n let sX = scope.position.x;\n let sY = scope.position.y;\n\n let p = scope.parent;\n while (p) {\n sX += p.position.x;\n sY += p.position.y;\n p = p.parent;\n }\n\n return {\n x: gp.x - sX,\n y: gp.y - sY,\n };\n};\n","import { ObjectVisualKey } from './map';\n\nexport type TDirection = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;\n/** Type declaration for reserved direction IDs */\nexport type TDirections = {\n /** idle, no direction */\n readonly O: 0;\n /** south */\n readonly S: 1;\n /** south-west */\n readonly SW: 2;\n /** west */\n readonly W: 3;\n /** north-west */\n readonly NW: 4;\n /** north */\n readonly N: 5;\n /** north-east */\n readonly NE: 6;\n /** east */\n readonly E: 7;\n /** south-east */\n readonly SE: 8;\n};\n\n// export type Traviso = {\n// DIRECTIONS: TDirections,\n\n// }\n\n/**\n * The direction IDs to be used in the engine\n *\n * @memberof TRAVISO\n * @for TRAVISO\n *\n * @property\n * @static\n * @public\n * @constant\n */\nexport const DIRECTIONS: Readonly = {\n O: 0,\n S: 1,\n SW: 2,\n W: 3,\n NW: 4,\n N: 5,\n NE: 6,\n E: 7,\n SE: 8,\n};\n\nexport type TReservedTextureIDs = ObjectVisualKey[];\n/**\n * Texture IDs reserved for internal use\n *\n * @static\n * @private\n * @constant\n * @property\n * @internal\n */\nexport const RESERVED_TEXTURE_IDS: Readonly = [\n 'idle',\n 'idle_s',\n 'idle_sw',\n 'idle_w',\n 'idle_nw',\n 'idle_n',\n 'idle_ne',\n 'idle_e',\n 'idle_se',\n 'move_s',\n 'move_sw',\n 'move_w',\n 'move_nw',\n 'move_n',\n 'move_ne',\n 'move_e',\n 'move_se',\n];\n\n/** Type declaration for the IDs of available path finding algorithms */\nexport type TPathFindingAlgorithmID = 0 | 1;\n/** Type declaration for available path finding algorithms */\nexport type TPathFindingAlgorithms = {\n readonly ASTAR_ORTHOGONAL: TPathFindingAlgorithmID;\n readonly ASTAR_DIAGONAL: TPathFindingAlgorithmID;\n};\n/**\n * The types of available path finding algorithms\n *\n * @memberof TRAVISO\n * @for TRAVISO\n *\n * @property\n * @static\n * @public\n * @constant\n */\nexport const PF_ALGORITHMS: Readonly = {\n ASTAR_ORTHOGONAL: 0,\n ASTAR_DIAGONAL: 1,\n};\n\nexport const KEY_EMPTY_TILE: string = '0';\nexport const KEY_NO_OBJECTS: string = '0';\n","let logEnabled: boolean = true;\n\n/**\n * Writes logs to the browser console\n *\n * @memberof TRAVISO\n * @for TRAVISO\n *\n * @method\n * @function\n * @public\n * @static\n *\n * @param s {string} text to log\n */\nexport function trace(s: string): void {\n if (logEnabled) {\n // eslint-disable-next-line no-console\n self.console.log('TRAVISO: ' + s);\n }\n}\n\n/**\n * Determines if TRAVISO can log helper text.\n *\n * @memberof TRAVISO\n * @for TRAVISO\n *\n * @method\n * @function\n * @public\n * @static\n *\n * @param enabled {boolean} enable logging or not, default `true`\n * @return {boolean} logging enabled or not\n */\nexport function enableDisableLogging(enabled: boolean = true): boolean {\n return (logEnabled = enabled);\n}\n","import { Texture } from 'pixi.js';\nimport { EngineView } from '../map/EngineView';\nimport { TDirection, DIRECTIONS, RESERVED_TEXTURE_IDS } from './constants';\nimport { trace } from './trace';\n\nexport type ObjectVisualKey =\n | 'idle'\n | 'idle_s'\n | 'idle_sw'\n | 'idle_w'\n | 'idle_nw'\n | 'idle_n'\n | 'idle_ne'\n | 'idle_e'\n | 'idle_se'\n | 'move_s'\n | 'move_sw'\n | 'move_w'\n | 'move_nw'\n | 'move_n'\n | 'move_ne'\n | 'move_e'\n | 'move_se'\n | string;\n/** Type declaration for column-row pair objects */\nexport type TColumnRowPair = {\n /** column index of the column-row pair */\n c: number;\n /** row index of the column-row pair */\n r: number;\n};\n/** Type declaration for x-y position pair objects */\nexport type TPositionPair = {\n /** x position of the pair */\n x: number;\n /** y position of the pair */\n y: number;\n};\nexport type ObjectInfoTextures = { [key in ObjectVisualKey]: Texture[] };\nexport type ObjectInfoTextureNames = { [key in ObjectVisualKey]: string[] };\nexport type ObjectInfoInteractionOffsets = {\n [key in ObjectVisualKey]: TColumnRowPair;\n};\n\nexport type TTileInfo = {\n m: boolean;\n t: Texture[];\n};\n\nexport type MapDataObjectVisualFrame = { path: string };\n\nexport type MapDataObjectVisual = {\n frames: MapDataObjectVisualFrame[];\n path: string;\n extension: string;\n numberOfFrames: number;\n startIndex: number;\n ipoc: number;\n ipor: number;\n};\n\nexport type MapDataObjectVisuals = {\n [key in ObjectVisualKey]: MapDataObjectVisual;\n};\n\nexport type MapDataTile = { movable: boolean; path: string };\nexport type MapDataTiles = {\n [key: string]: MapDataTile;\n};\n\nexport interface IObjectInfo {\n m: boolean;\n i: boolean;\n nt: boolean;\n f: boolean;\n s: unknown; // TODO: This is probably not being used any more\n t: ObjectInfoTextures;\n /** Interaction offsets for each visual defined for the object */\n io: ObjectInfoInteractionOffsets;\n rowSpan: number;\n columnSpan: number;\n}\nexport interface IMapDataObject extends IObjectInfo {\n movable: boolean;\n interactive: boolean;\n noTransparency: boolean;\n floor: boolean;\n visuals: MapDataObjectVisuals;\n // added by engine\n id: string;\n textureNames: ObjectInfoTextureNames;\n}\nexport type TMapDataObjects = {\n [key: string]: IMapDataObject;\n};\n\n/** Type declaration for processed map data */\nexport type TMapData = {\n tiles: MapDataTiles;\n objects: TMapDataObjects;\n initialControllableLocation: {\n columnIndex: number;\n rowIndex: number;\n controllableId: string;\n };\n tileHighlightImage: {\n path: string;\n };\n singleGroundImage: {\n path: string;\n scale: number;\n };\n groundMap: Array<{ row: string }>;\n objectsMap: Array<{ row: string }>;\n // added by engine\n groundMapData: string[][];\n objectsMapData: string[][];\n};\n\n/**\n * Returns an object with all properties of a map-object defined by object-type\n *\n * @method\n * @function\n * @private\n * @static\n *\n * @param engine {EngineView} engine instance\n * @param objectType {string} type/id of the related object tag defined in the json file\n * @return {IObjectInfo} an object with certain properties of a map-object\n */\nexport const getObjectInfo = (engine: EngineView, objectType: string): IObjectInfo => {\n const objInfo: IMapDataObject = engine.mapData.objects[objectType];\n if (objInfo) {\n const textures: ObjectInfoTextures = {};\n for (const key in objInfo.textureNames) {\n if (Object.prototype.hasOwnProperty.call(objInfo.textureNames, key)) {\n textures[key] = getObjectTextures(engine, objectType, key);\n }\n }\n return {\n m: objInfo.m,\n i: objInfo.i,\n f: objInfo.f,\n nt: objInfo.nt,\n t: textures,\n io: objInfo.io,\n s: objInfo.s,\n rowSpan: objInfo.rowSpan,\n columnSpan: objInfo.columnSpan,\n };\n }\n\n throw new Error('TRAVISO: No info defined for object type: ' + objectType);\n};\n/**\n * Returns an array of textures {PIXI.Texture} belong to a map-object defined by object-type and sprite-id\n *\n * @function getObjectTextures\n * @memberof TRAVISO\n * @static\n * @private\n * @param engine {EngineView} engine instance\n * @param objectType {string} type/id of the related object tag defined in the json file\n * @param visualId {string} id of the related v tag defined in the json file\n * @return {Array(PIXI.Texture)} an array of textures\n */\nexport const getObjectTextures = (engine: EngineView, objectType: string, visualId: ObjectVisualKey): Texture[] => {\n const objInfo: IMapDataObject = engine.mapData.objects[objectType];\n if (objInfo) {\n let textures = null;\n const textureNames = objInfo.textureNames[visualId];\n if (textureNames && textureNames.length > 0) {\n textures = [];\n for (let j = 0; j < textureNames.length; j++) {\n textures[textures.length] = Texture.from(textureNames[j]);\n }\n } else {\n trace('No textures defined for object type: ' + objectType + ' and visualId: ' + visualId);\n }\n return textures;\n }\n\n throw new Error('TRAVISO: No info defined for object type: ' + objectType);\n};\n\n/**\n * Returns an object with all properties of a map-tile defined by tileType\n *\n * @method\n * @function\n * @static\n *\n * @param engine {EngineView} engine instance\n * @param tileType {string} type/id of the related tile tag defined in the json file\n * @return {TTileInfo} an information object with certain properties (movability and textures) of a map-tile\n */\nexport const getTileInfo = (engine: EngineView, tileType: string): TTileInfo => {\n const tileInfo = engine.mapData.tiles[tileType];\n if (tileInfo) {\n return {\n // m : tileInfo.m,\n m: tileInfo.movable,\n t: tileInfo.path ? [Texture.from(tileInfo.path)] : [],\n };\n } else if (engine.mapData.singleGroundImage) {\n return {\n m: parseInt(tileType) > 0,\n t: [],\n };\n } else {\n throw new Error('TRAVISO: No info defined for tile type: ' + tileType);\n }\n};\n\n/**\n * Returns the predefined moving texture id for the given direction\n *\n * @method\n * @function\n * @static\n *\n * @param dir {TDirection} index of the direction\n * @return {ObjectVisualKey} texture id for the given direction\n */\nexport const getMovingDirVisualId = (dir: TDirection): ObjectVisualKey => {\n return RESERVED_TEXTURE_IDS[dir + 8];\n};\n\n/**\n * Returns the predefined stationary texture id for the given direction\n *\n * @method\n * @function\n * @static\n *\n * @param dir {TDirection} index of the direction\n * @return {ObjectVisualKey} texture id for the given direction\n */\nexport const getStationaryDirVisualId = (dir: TDirection): ObjectVisualKey => {\n return RESERVED_TEXTURE_IDS[dir];\n};\n\n/**\n * Returns the direction (id) between two locations\n *\n * @function getDirBetween\n * @memberof TRAVISO\n * @static\n * @private\n * @param r1 {number} row index of the first location\n * @param c1 {number} column index of the first location\n * @param r2 {number} row index of the second location\n * @param c2 {number} column index of the second location\n * @return {TDirection} direction id\n */\nexport const getDirBetween = (r1: number, c1: number, r2: number, c2: number): TDirection => {\n let dir: TDirection = DIRECTIONS.S;\n if (r1 === r2) {\n if (c1 === c2) {\n dir = DIRECTIONS.O;\n } else if (c1 < c2) {\n dir = DIRECTIONS.NE;\n } else {\n dir = DIRECTIONS.SW;\n }\n } else if (r1 < r2) {\n if (c1 === c2) {\n dir = DIRECTIONS.SE;\n } else if (c1 < c2) {\n dir = DIRECTIONS.E;\n } else {\n dir = DIRECTIONS.S;\n }\n } else if (r1 > r2) {\n if (c1 === c2) {\n dir = DIRECTIONS.NW;\n } else if (c1 < c2) {\n dir = DIRECTIONS.N;\n } else {\n dir = DIRECTIONS.W;\n }\n }\n return dir;\n};\n","import { Container, AnimatedSprite } from 'pixi.js';\nimport { EngineView } from './EngineView';\nimport { existy } from '../utils/calculations';\nimport { TDirection, DIRECTIONS } from '../utils/constants';\nimport {\n TColumnRowPair,\n ObjectInfoInteractionOffsets,\n ObjectInfoTextures,\n ObjectVisualKey,\n getMovingDirVisualId,\n getObjectInfo,\n getStationaryDirVisualId,\n IObjectInfo,\n} from '../utils/map';\n\n/**\n * Visual class for the map-objects.\n *\n * @class ObjectView\n * @extends PIXI.Container\n */\nexport class ObjectView extends Container {\n /**\n * A reference to the engine view that the map-object sits in.\n * @property {EngineView} engine\n * @private\n * @internal\n */\n private _engine: EngineView;\n /**\n * Type-id of the map-object as defined in the json file.\n * @property\n * @public\n */\n private type: string;\n /**\n * Defines if the map-object is movable onto by other map-objects.\n * @property\n * @public\n */\n public isMovableTo: boolean;\n /**\n * Defines if the map-object is interactive/selectable.\n * @property\n * @public\n */\n public isInteractive: boolean;\n /**\n * Number of tiles that map-object covers horizontally on the isometric map\n * @property\n * @public\n */\n public columnSpan: number;\n /**\n * Number of tiles that map-object covers vertically on the isometric map\n * @property\n * @public\n */\n public rowSpan: number;\n\n /**\n * A dictionary for all the textures defined for the map-object.\n * @property\n * @private\n */\n private _textures: ObjectInfoTextures;\n\n /**\n * A dictionary for interaction offset points for each visual if defined in the map data file.\n * @property\n * @private\n */\n private _interactionOffsets: ObjectInfoInteractionOffsets;\n\n /**\n * If true doesn't allow transparency change on this object\n * @property\n * @public\n */\n public noTransparency: boolean;\n /**\n * Defines if the object is a floor object or not\n * @property\n * @public\n */\n public isFloorObject: boolean;\n /**\n * Interaction offset points for the active visual.\n * @property\n * @public\n */\n public currentInteractionOffset: TColumnRowPair;\n /**\n * Current direction of the object.\n * @property\n * @public\n */\n public currentDirection: TDirection;\n\n /**\n * Defines if the map-object is movable onto by other map-objects.\n * @property\n * @private\n * @internal\n */\n private _container: AnimatedSprite;\n /**\n * Position of the object in terms of column and row index.\n * @property\n * @public\n */\n public mapPos: TColumnRowPair;\n\n /**\n * @property\n * @function\n * @private\n * @internal\n */\n private onContainerAnimCompleteCallback: (objectView: ObjectView) => unknown;\n /**\n * @property\n * @function\n * @private\n * @internal\n */\n private onContainerAnimComplete_delayed_binded: () => void;\n /**\n * @property\n * @function\n * @private\n * @internal\n */\n private onContainerAnimComplete_binded: () => void;\n\n /**\n * Visual class constructor for the map-objects.\n *\n * @constructor\n *\n * @param engine {EngineView} the engine instance that the map-object sits in, required\n * @param type {number} type-id of the object as defined in the JSON file\n * @param animSpeed {number} animation speed for the animated visuals, default 0.5\n */\n constructor(engine: EngineView, type: string, animSpeed: number = 0.5) {\n super();\n\n this.onContainerAnimComplete_delayed_binded = this.onContainerAnimComplete_delayed.bind(this);\n this.onContainerAnimComplete_binded = this.onContainerAnimComplete.bind(this);\n\n this._engine = engine;\n this.type = type;\n\n const info: IObjectInfo = getObjectInfo(this._engine, this.type);\n this.isMovableTo = info.m;\n this.isInteractive = info.i;\n this.interactive = this.interactiveChildren = false;\n this.isFloorObject = info.f;\n this.noTransparency = info.nt;\n this.rowSpan = info.rowSpan;\n this.columnSpan = info.columnSpan;\n const xAnchor = this.rowSpan / (this.columnSpan + this.rowSpan);\n this._textures = info.t;\n this._interactionOffsets = info.io;\n this.currentInteractionOffset = this._interactionOffsets.idle;\n\n this._container = new AnimatedSprite(this._textures.idle);\n this._container.interactive = this._container.interactiveChildren = false;\n this._container.anchor.x = xAnchor;\n this._container.anchor.y = 1;\n this.addChild(this._container);\n this.animSpeed = animSpeed;\n this._container.gotoAndStop(0);\n }\n\n /**\n * Animation speed for the animated visuals included in the map-object visuals.\n *\n * @property\n * @default 0.5\n */\n public get animSpeed(): number {\n return this._container.animationSpeed;\n }\n public set animSpeed(value: number) {\n this._container.animationSpeed = existy(value) && value > 0 ? value : 0.5;\n }\n\n /**\n * Changes the map-object's texture(s) according to the specified direction-id and the state of the map-object (moving or stationary).\n *\n * @method\n * @function\n * @public\n *\n * @param direction {TDirection} direction-id as defined in `TRAVISO.DIRECTIONS`\n * @param moving {boolean} if the requested visuals are for moving or stationary state, default `false`\n * @param stopOnFirstFrame {boolean} if true stops on the first frame after changing the visuals, default `false`\n * @param noLoop {boolean} if true the animation will not loop after the first run, default `false`\n * @param onAnimComplete {Function} callback function to call if 'noLoop' is true after the first run of the animation, default `null`\n * @param animSpeed {number} animation speed for the animated visuals, stays the same if not defined, default `null`\n */\n public changeVisualToDirection(\n direction: TDirection,\n moving: boolean = false,\n stopOnFirstFrame: boolean = false,\n noLoop: boolean = false,\n onAnimComplete: (objectView: ObjectView) => unknown = null,\n animSpeed: number = null\n ): void {\n if (\n !this.changeVisual(\n moving ? getMovingDirVisualId(direction) : getStationaryDirVisualId(direction),\n stopOnFirstFrame,\n noLoop,\n onAnimComplete,\n animSpeed\n )\n ) {\n if (!this.changeVisual('idle', stopOnFirstFrame, noLoop, onAnimComplete, animSpeed)) {\n throw new Error(\"no 'idle' visual defined as backup for object type \" + this.type);\n } else {\n this.currentDirection = DIRECTIONS.O;\n }\n } else {\n this.currentDirection = direction;\n }\n }\n\n /**\n * Changes the map-object's texture(s) according to the specified visual-id.\n *\n * @method\n * @function\n * @public\n * @internal\n *\n * @param vId {string} visual-id\n * @param stopOnFirstFrame {boolean} if true stops on the first frame after changing the visuals, default `false`\n * @param noLoop {boolean} if true the animation will not loop after the first run, default `false`\n * @param onAnimComplete {Function} callback function to call if 'noLoop' is true after the first run of the animation, default `null`\n * @param animSpeed {number} animation speed for the animated visuals, stays the same if not defined, default `null`\n * @return {boolean} `true` if the visual-id was valid and the visual has changed without errors\n */\n public changeVisual(\n vId: ObjectVisualKey,\n stopOnFirstFrame: boolean = false,\n noLoop: boolean = false,\n onAnimComplete: (objectView: ObjectView) => unknown = null,\n animSpeed: number = null\n ): boolean {\n if (!this._textures[vId]) {\n // trace(\"!!! No textures defined for vId: \" + vId);\n return false;\n }\n\n this.currentInteractionOffset = this._interactionOffsets[vId];\n\n if (this._container.textures === this._textures[vId] && !noLoop) {\n this._container.loop = !noLoop;\n if (existy(animSpeed) && animSpeed > 0) {\n this.animSpeed = animSpeed;\n }\n return true;\n }\n\n this._container.textures = this._textures[vId];\n\n if (!stopOnFirstFrame && this._textures[vId].length > 1) {\n this._container.loop = !noLoop;\n if (noLoop && onAnimComplete) {\n this.onContainerAnimCompleteCallback = onAnimComplete;\n this._container.onComplete = this.onContainerAnimComplete_binded;\n }\n if (existy(animSpeed) && animSpeed > 0) {\n this.animSpeed = animSpeed;\n }\n this._container.gotoAndPlay(0);\n } else {\n this._container.gotoAndStop(0);\n }\n\n if (this._engine.objectUpdateCallback) {\n this._engine.objectUpdateCallback(this);\n }\n\n return true;\n }\n\n private onContainerAnimComplete(): void {\n setTimeout(this.onContainerAnimComplete_delayed_binded, 100);\n }\n private onContainerAnimComplete_delayed(): void {\n this.onContainerAnimCompleteCallback(this);\n this.onContainerAnimCompleteCallback = null;\n }\n\n /**\n * Clears all references.\n *\n * @method\n * @function\n * @public\n */\n public destroy(): void {\n if (this._container) {\n this._engine = null;\n this._textures = null;\n // this.removeChild(this._container);\n // this._container.textures = null;\n this._container.onComplete = null;\n this._container = null;\n }\n }\n}\n","import { Texture, Container, Graphics, Sprite, AnimatedSprite } from 'pixi.js';\nimport { EngineView } from './EngineView';\nimport { TColumnRowPair, getTileInfo } from '../utils/map';\nimport { ITweenTarget } from './MoveEngine';\n\n/**\n * Visual class for the map-tiles.\n *\n * @class TileView\n * @extends PIXI.Container\n * @constructor\n * @param engine {EngineView} the engine instance that the map-tile sits in\n * @param type {string} type-id of the tile as defined in the JSON file\n */\nexport class TileView extends Container {\n /**\n * A reference to the engine view that the map-tile sits in.\n * @property\n * @private\n * @internal\n */\n private _engine: EngineView;\n /**\n * Type-id of the map-tile as defined in the JSON file.\n * @property\n * @public\n */\n public type: string;\n /**\n * Defines the positions of the vertices of the tile.\n * @property\n * @public\n */\n public vertices: number[][];\n /**\n * Defines if the map-tile is movable onto by map-objects.\n * @property\n * @public\n */\n public isMovableTo: boolean;\n /**\n * @property\n * @private\n * @internal\n */\n private _tileGraphics: AnimatedSprite;\n /**\n * The visual that will be used to highlight the tile.\n * @property\n * @private\n * @internal\n */\n private _highlightedOverlay: Sprite | Graphics;\n /**\n * The highlight state of the map-tile.\n * @property\n * @private\n * @internal\n */\n private _isHighlighted: boolean = false;\n /**\n * Position of the tile in terms of column and row index.\n * @property\n * @public\n */\n public mapPos: TColumnRowPair;\n /**\n * @property\n * @private\n * @internal\n */\n private onHighlightTweenEnd_binded: () => void;\n\n /**\n * Visual class constructor for the map-tiles.\n *\n * @constructor\n *\n * @param engine {EngineView} the engine instance that the map-tile sits in\n * @param type {string} type-id of the tile as defined in the JSON file\n */\n constructor(engine: EngineView, type: string) {\n super();\n\n this.onHighlightTweenEnd_binded = this.onHighlightTweenEnd.bind(this);\n\n this._engine = engine;\n this.type = type;\n\n const halfHeight = this._engine.tileHalfHeight;\n const halfWidth = this._engine.tileHalfWidth;\n\n this.vertices = [\n [-halfWidth, 0],\n [0, -halfHeight],\n [halfWidth, 0],\n [0, halfHeight],\n ];\n\n const tileInfo = getTileInfo(this._engine, this.type);\n this.isMovableTo = tileInfo.m;\n\n if (tileInfo.t.length > 0) {\n this._tileGraphics = new AnimatedSprite(tileInfo.t);\n this._tileGraphics.anchor.x = 0.5;\n this._tileGraphics.anchor.y = 0.5;\n this.addChild(this._tileGraphics);\n this._tileGraphics.gotoAndStop(parseInt(this.type));\n }\n\n // const colorsArray = [0x0106ff, 0x3b6d14, 0x8789ff, 0xb32bf9, 0xeb36d0, 0xfe0000, 0xeb3647, 0xf27e31, 0xffea01, 0x00ff18, 0x3b6d14, 0xfa9bbb, 0xf9c7bc, 0x8d6729, 0x633e07];\n // const c = colorsArray[ this.type < 2 ? this.type : 0 ];\n\n // this._tileGraphics = new PIXI.Graphics();\n // this._tileGraphics.clear();\n // this._tileGraphics.beginFill(c);\n // this._tileGraphics.moveTo(this.vertices[0][0], this.vertices[0][1]);\n // for (let i=1; i < this.vertices.length; i++)\n // {\n // this._tileGraphics.lineTo(this.vertices[i][0], this.vertices[i][1]);\n // };\n // this._tileGraphics.endFill();\n\n if (this._engine.mapData.tileHighlightImage) {\n this._highlightedOverlay = new Sprite(Texture.from(this._engine.mapData.tileHighlightImage.path));\n this._highlightedOverlay.anchor.x = 0.5;\n this._highlightedOverlay.anchor.y = 0.5;\n this.addChild(this._highlightedOverlay);\n } else {\n this._highlightedOverlay = new Graphics();\n this._highlightedOverlay.clear();\n this._highlightedOverlay.lineStyle(\n this._engine.tileHighlightStrokeAlpha <= 0 ? 0 : 2,\n this._engine.tileHighlightStrokeColor,\n this._engine.tileHighlightStrokeAlpha\n );\n this._highlightedOverlay.beginFill(\n this._engine.tileHighlightFillColor,\n this._engine.tileHighlightFillAlpha\n );\n this._highlightedOverlay.moveTo(this.vertices[0][0], this.vertices[0][1]);\n for (let i = 1; i < this.vertices.length; i++) {\n this._highlightedOverlay.lineTo(this.vertices[i][0], this.vertices[i][1]);\n }\n this._highlightedOverlay.lineTo(this.vertices[0][0], this.vertices[0][1]);\n this._highlightedOverlay.endFill();\n this.addChild(this._highlightedOverlay);\n }\n\n this._highlightedOverlay.scale.x = this._highlightedOverlay.scale.y = 0.1;\n this._highlightedOverlay.visible = false;\n }\n\n /**\n * Changes the highlight state of the map-tile.\n *\n * @method\n * @function\n * @public\n *\n * @param isHighlighted {boolean} if the tile is being highlighted or not\n * @param instant {boolean} if the change will be instant or animated, default `false`\n */\n public setHighlighted(isHighlighted: boolean, instant: boolean = false): void {\n if (this._isHighlighted !== isHighlighted) {\n if (instant) {\n this._highlightedOverlay.scale.x = this._highlightedOverlay.scale.y = isHighlighted ? 1 : 0.1;\n this._highlightedOverlay.visible = isHighlighted;\n this._isHighlighted = isHighlighted;\n return;\n }\n\n if (isHighlighted) {\n this._highlightedOverlay.visible = isHighlighted;\n }\n\n this._isHighlighted = isHighlighted;\n\n const ts = isHighlighted ? 1 : 0.1;\n if (this._highlightedOverlay.scale.x === ts) {\n this._highlightedOverlay.visible = isHighlighted;\n } else {\n this._highlightedOverlay.scale.x = this._highlightedOverlay.scale.y = isHighlighted ? 0.1 : 1;\n\n // @formatter:off\n this._engine.moveEngine.addTween(\n this._highlightedOverlay.scale as unknown as ITweenTarget,\n 0.5,\n { x: ts, y: ts },\n 0,\n 'linear',\n true,\n this.onHighlightTweenEnd_binded\n );\n // @formatter:on\n }\n }\n }\n /**\n * @method\n * @function\n * @private\n * @internal\n */\n private onHighlightTweenEnd(): void {\n this._highlightedOverlay.visible = this._isHighlighted;\n }\n\n /**\n * Clears all references.\n *\n * @method\n * @function\n * @public\n */\n public destroy(): void {\n if (this._engine) {\n if (this._engine && this._engine.moveEngine) {\n this._engine.moveEngine.killTweensOf(this._highlightedOverlay.scale as unknown as ITweenTarget);\n }\n this._engine = null;\n this._highlightedOverlay = null;\n this._tileGraphics = null;\n }\n }\n}\n","export type EasingType =\n | 'easeInOut'\n | 'easeInOutQuad'\n | 'Quad.easeInOut'\n | 'easeIn'\n | 'easeInQuad'\n | 'Quad.easeIn'\n | 'easeOut'\n | 'easeOutQuad'\n | 'Quad.easeOut'\n | 'linear';\nexport type EasingFunction = (t: number, b: number, c: number, d: number) => number;\n/**\n * Returns the proper easing method to use depending on the easing id specified.\n *\n * @method getEasingFunc\n * @private\n * @param e {string} the easing id\n * @return {Function} the easing method to use\n */\nexport const getEasingFunc = (e: EasingType): EasingFunction => {\n if (e === 'easeInOut' || e === 'easeInOutQuad' || e === 'Quad.easeInOut') {\n return easeInOutQuad;\n } else if (e === 'easeIn' || e === 'easeInQuad' || e === 'Quad.easeIn') {\n return easeInQuad;\n } else if (e === 'easeOut' || e === 'easeOutQuad' || e === 'Quad.easeOut') {\n return easeOutQuad;\n } else {\n return linearTween;\n }\n};\n\n/**\n * Linear tween calculation.\n *\n * @method linearTween\n * @private\n * @param t {number} current time\n * @param b {number} initial value\n * @param c {number} difference with the target value\n * @param d {number} total time\n * @return {number} result of the calculation\n */\nexport const linearTween = (t: number, b: number, c: number, d: number): number => {\n return (c * t) / d + b;\n};\n/**\n * Quadratic ease-in tween calculation.\n *\n * @method easeInQuad\n * @private\n * @param t {number} current time\n * @param b {number} initial value\n * @param c {number} difference with the target value\n * @param d {number} total time\n * @return {number} result of the calculation\n */\nexport const easeInQuad = (t: number, b: number, c: number, d: number): number => {\n t /= d;\n return c * t * t + b;\n};\n\n/**\n * Quadratic ease-out tween calculation.\n *\n * @method easeOutQuad\n * @private\n * @param t {number} current time\n * @param b {number} initial value\n * @param c {number} difference with the target value\n * @param d {number} total time\n * @return {number} result of the calculation\n */\nexport const easeOutQuad = (t: number, b: number, c: number, d: number): number => {\n t /= d;\n return -c * t * (t - 2) + b;\n};\n/**\n * Quadratic ease-in-out tween calculation.\n *\n * @method easeInOutQuad\n * @private\n * @param t {number} current time\n * @param b {number} initial value\n * @param c {number} difference with the target value\n * @param d {number} total time\n * @return {number} result of the calculation\n */\nexport const easeInOutQuad = (t: number, b: number, c: number, d: number): number => {\n t /= d / 2;\n if (t < 1) {\n return (c / 2) * t * t + b;\n }\n t--;\n return (-c / 2) * (t * (t - 2) - 1) + b;\n};\n","/**\n * @author Hakan Karlidag - @axaq\n */\n\nimport { Ticker } from 'pixi.js';\nimport { trace } from '../utils/trace';\nimport { EngineView } from '../map/EngineView';\nimport { ObjectView } from '../map/ObjectView';\nimport { GridNode } from '../pathFinding/GridNode';\nimport { getDist, getUnit } from '../utils/calculations';\nimport { EasingFunction, EasingType, getEasingFunc } from '../utils/easing';\nimport { TColumnRowPair, TPositionPair } from '../utils/map';\n\nexport interface IMovable extends ObjectView {\n // [key: string]: any,\n speedUnit: TPositionPair;\n speedMagnitude: number;\n currentPath: GridNode[];\n currentPathStep: number;\n currentTarget: TPositionPair;\n currentTargetTile: GridNode;\n currentReachThresh: number;\n prevPosition: TPositionPair;\n}\n\nexport interface ITween {\n target: { [key: string]: unknown };\n duration: number;\n delay: number;\n easingFunc: EasingFunction;\n overwrite: boolean;\n onComplete: () => void;\n totalFrames: number;\n currentFrame: number;\n vars: { [key: string]: { b: number; c: number } };\n}\n\nexport interface ITweenTarget {\n [key: string]: unknown;\n tweens?: ITween[];\n}\n\n/**\n * Holds and manages all the logic for tween animations and map-object movement on the map.\n * This is created and used by EngineView instances.\n *\n * @class MoveEngine\n */\nexport class MoveEngine {\n /**\n * A reference to the engine view that uses this move engine.\n * @property\n * @private\n */\n private _engine: EngineView;\n\n /**\n * The speed value to be used for object movements if not defined specifically.\n * @property\n * @private\n * @default `3`\n */\n private _defaultSpeed: number;\n /**\n * Specifies if the move-engine will process the object movements.\n * @property\n * @private\n * @default `false`\n */\n private _activeForMovables: boolean = false;\n /**\n * Specifies if the move-engine will process the tweens.\n * @property\n * @private\n * @default `false`\n */\n private _activeForTweens: boolean = false;\n /**\n * Specifies if the move-engine will process the tweens and object movements.\n * @property\n * @private\n * @default `true`\n */\n private _processFrame: boolean = true;\n /**\n * The list to store current map-objects in move.\n * @property\n * @private\n * @default `[]`\n */\n private _movables: IMovable[] = [];\n /**\n * The list to store targets for the current tweens.\n * @property\n * @private\n * @default `[]`\n */\n private _tweenTargets: ITweenTarget[] = [];\n /**\n * Used to calculate how many frames a tween will take to process.\n * @property\n * @private\n * @default `60`\n */\n private _fps: number = 60;\n\n private _ticker: Ticker;\n private _processFunc: () => void;\n\n /**\n * Constructor function for MoveEngine.\n *\n * @constructor\n *\n * @param engine {EngineView} the engine instance that the animations will perform on\n * @param defaultSpeed {number} default speed for the map-objects to be used when they move on map, default 3\n */\n constructor(engine: EngineView, defaultSpeed: number = 3) {\n this._engine = engine;\n this._defaultSpeed = defaultSpeed;\n\n this._processFunc = this.run.bind(this);\n this._ticker = new Ticker();\n this._ticker.add(this._processFunc);\n this._ticker.start();\n }\n\n /**\n * Adds a single tween for the given object.\n *\n * @method\n * @function\n * @public\n *\n * @param o {ITweenTarget} the object to add tween animation to\n * @param duration {number} the duration of the tween animation in seconds\n * @param vars {{ [key: string]: number }} the object defining which properties of the target object will be animated\n * @param delay {number} the amount of waiting before the tween animation starts, in seconds, default `0`\n * @param easing {EasingType} type of the easing, default `'linear'`\n * @param overwrite {boolean} if the other tween animations assigned to the same object are going to be killed, default `false`\n * @param onComplete {Function} callback function to be called after the tween animation finished, default `null`\n */\n public addTween(\n o: ITweenTarget,\n duration: number,\n vars: { [key: string]: number },\n delay: number = 0,\n easing: EasingType = 'linear',\n overwrite: boolean = false,\n onComplete: () => void = null\n ): void {\n let v: { [key: string]: { b: number; c: number } } = null;\n for (const prop in vars) {\n if (o[prop] !== vars[prop]) {\n if (!v) {\n v = {};\n }\n v[prop] = { b: o[prop] as number, c: vars[prop] - (o[prop] as number) };\n }\n }\n\n if (v) {\n const t: ITween = {\n target: o,\n duration: duration,\n delay: Number(delay) || 0,\n easingFunc: getEasingFunc(easing),\n overwrite: overwrite || false,\n onComplete: onComplete || null,\n totalFrames: duration * this._fps,\n currentFrame: 0,\n vars: v,\n };\n\n const idx = this._tweenTargets.indexOf(o);\n if (idx >= 0) {\n let tweens: ITween[] = o.tweens;\n if (!tweens) {\n tweens = [];\n }\n if (t.overwrite) {\n for (let i = 0; i < tweens.length; i++) {\n tweens[i] = null;\n }\n tweens = [];\n }\n\n tweens[tweens.length] = t;\n o.tweens = tweens;\n } else {\n o.tweens = [t];\n this._tweenTargets[this._tweenTargets.length] = o;\n }\n\n if (this._tweenTargets.length > 0 && !this._activeForTweens) {\n this._activeForTweens = true;\n }\n }\n }\n\n /**\n * Removes a single tween from the given object.\n *\n * @method\n * @function\n * @public\n *\n * @param o {ITweenTarget} the object to remove the tween animation from\n * @param t {ITween} the tween to be removed from the object\n * @return {boolean} if the tween is found and removed\n */\n public removeTween(o: ITweenTarget, t: ITween): boolean {\n let targetRemoved = false;\n\n if (o && t) {\n const idx = this._tweenTargets.indexOf(o);\n if (idx >= 0) {\n if (this._tweenTargets[idx].tweens && this._tweenTargets[idx].tweens.length > 0) {\n const tweens = this._tweenTargets[idx].tweens;\n const idx2 = tweens.indexOf(t);\n if (idx2 >= 0) {\n t.onComplete = null;\n t.easingFunc = null;\n t.target = null;\n\n tweens.splice(idx2, 1);\n if (tweens.length === 0) {\n this._tweenTargets.splice(idx, 1);\n targetRemoved = true;\n }\n } else {\n throw new Error('No tween defined for this object');\n }\n } else {\n throw new Error('No tween defined for this object');\n }\n } else {\n throw new Error('No tween target defined for this object');\n }\n\n if (this._tweenTargets.length === 0) {\n this._activeForTweens = false;\n }\n }\n\n return targetRemoved;\n }\n\n /**\n * Removes and kills all tweens assigned to the given object.\n *\n * @method\n * @function\n * @public\n *\n * @param o {ITweenTarget} the object to remove the tween animations from\n * @return {boolean} if any tween is found and removed from the object specified\n */\n public killTweensOf(o: ITweenTarget): boolean {\n let targetRemoved = false;\n\n const idx = this._tweenTargets.indexOf(o);\n if (idx >= 0) {\n if (this._tweenTargets[idx].tweens && this._tweenTargets[idx].tweens.length > 0) {\n const tweens = this._tweenTargets[idx].tweens;\n for (let j = 0; j < tweens.length; j++) {\n tweens[j].onComplete = null;\n tweens[j].easingFunc = null;\n tweens[j].target = null;\n tweens[j] = null;\n }\n this._tweenTargets[idx].tweens = null;\n }\n\n this._tweenTargets.splice(idx, 1);\n\n targetRemoved = true;\n }\n\n if (this._tweenTargets.length === 0) {\n this._activeForTweens = false;\n }\n\n return targetRemoved;\n }\n\n /**\n * Removes and kills all the tweens in operation currently.\n *\n * @method\n * @function\n * @private\n */\n private removeAllTweens(): void {\n this._activeForTweens = false;\n\n let tweens, i, j;\n const len = this._tweenTargets.length;\n for (i = 0; i < len; i++) {\n tweens = this._tweenTargets[i].tweens;\n for (j = 0; j < tweens.length; j++) {\n tweens[j].onComplete = null;\n tweens[j].easingFunc = null;\n tweens[j].target = null;\n tweens[j] = null;\n }\n this._tweenTargets[i].tweens = null;\n this._tweenTargets[i] = null;\n }\n\n this._tweenTargets = [];\n }\n\n /**\n * Adds a map-object as movable to the engine.\n *\n * @method\n * @function\n * @public\n *\n * @param o {IMovable} the map-object to add as movable\n */\n public addMovable(o: IMovable): void {\n if (this._movables.indexOf(o) >= 0) {\n return;\n }\n\n this._movables[this._movables.length] = o;\n\n if (this._movables.length > 0 && !this._activeForMovables) {\n this._activeForMovables = true;\n }\n\n // all movables needs to have the following variables:\n // speedMagnitude, speedUnit (more to come...)\n\n // NOTE: might be a good idea to add all necessary parameters to the object here\n }\n\n /**\n * Removes a map-object from the current movables list.\n *\n * @method\n * @function\n * @public\n *\n * @param o {IMovable} the map-object to remove\n * @return {boolean} if the map-object is removed or not\n */\n public removeMovable(o: IMovable): boolean {\n const idx = this._movables.indexOf(o);\n if (idx !== -1) {\n o.speedUnit = { x: 0, y: 0 };\n this._movables.splice(idx, 1);\n }\n if (this._movables.length === 0) {\n this._activeForMovables = false;\n }\n // TODO: might be a good idea to remove/reset all related parameters from the object here\n\n return idx !== -1;\n }\n\n /**\n * Removes all movables.\n *\n * @method\n * @function\n * @private\n */\n private removeAllMovables(): void {\n this._activeForMovables = false;\n\n const len = this._movables.length;\n for (let i = 0; i < len; i++) {\n this._movables[i] = null;\n }\n\n this._movables = [];\n }\n\n /**\n * Changes the current path of a map-object.\n *\n * @method\n * @function\n * @public\n *\n * @param o {IMovable} the map-object to add the path to\n * @param path {Array(GridNode)} the new path\n * @param speed {number} speed of the map-object to be used during movement, if not defined it uses previous speed or the MoveEngine's default speed, default null\n */\n public addNewPathToObject(o: IMovable, path: GridNode[], speed: number): void {\n if (o.currentPath && o.currentTarget) {\n path[path.length] = o.currentPath[o.currentPathStep];\n }\n o.currentPath = path;\n o.currentPathStep = o.currentPath.length - 1;\n o.speedMagnitude = speed || o.speedMagnitude || this._defaultSpeed;\n }\n\n /**\n * Prepares a map-object for movement.\n *\n * @method\n * @function\n * @public\n *\n * @param o {IMovable} the movable map-object\n * @param path {Array(GridNode)} the path for the object\n * @param speed {number} speed of the map-object to be used during movement, if not defined it uses previous speed or the MoveEngine's default speed, default null\n */\n public prepareForMove(o: IMovable, path: GridNode[], speed: number = null): void {\n o.currentPath = path;\n o.currentPathStep = o.currentPath.length - 1;\n o.speedMagnitude = speed || o.speedMagnitude || this._defaultSpeed;\n }\n\n /**\n * Sets movement specific parameters for the map-object according to target location.\n *\n * @method\n * @function\n * @public\n *\n * @param o {IMovable} the movable map-object\n * @param pos {TColumnRowPair} target location\n */\n public setMoveParameters(o: IMovable, pos: TColumnRowPair): void {\n const px = this._engine.getTilePosXFor(pos.r, pos.c);\n const py = this._engine.getTilePosYFor(pos.r, pos.c) + this._engine.tileHalfHeight;\n\n o.speedUnit = getUnit({ x: px - o.position.x, y: py - o.position.y });\n\n o.currentTarget = { x: px, y: py };\n o.currentReachThresh = Math.ceil(\n Math.sqrt(o.speedUnit.x * o.speedUnit.x + o.speedUnit.y * o.speedUnit.y) * o.speedMagnitude\n );\n }\n\n /**\n * Method that precesses a single frame.\n *\n * @method\n * @function\n * @private\n */\n private run(): void {\n // NOTE: Write an alternative with a real time driven animator\n\n if (this._processFrame) {\n let len: number, o: IMovable, i: number;\n if (this._activeForMovables) {\n len = this._movables.length;\n\n let dist;\n for (i = 0; i < len; i++) {\n o = this._movables[i];\n\n // move object\n\n // speed vector (magnitude and direction)\n\n o.prevPosition = { x: o.position.x, y: o.position.y };\n\n // check for target reach\n if (o.currentTarget) {\n dist = getDist(o.position, o.currentTarget);\n if (dist <= o.currentReachThresh) {\n // reached to the target\n o.position.x = o.currentTarget.x;\n o.position.y = o.currentTarget.y;\n\n this._engine.onObjMoveStepEnd(o);\n i--;\n len--;\n continue;\n }\n }\n\n o.position.x += o.speedMagnitude * o.speedUnit.x;\n o.position.y += o.speedMagnitude * o.speedUnit.y;\n\n // check for tile change\n this._engine.checkForTileChange(o);\n this._engine.checkForFollowCharacter(o);\n\n // check for direction change\n }\n\n // will need a different loop to process crashes\n // for (i=0; i < len; i++)\n // {\n // o = this._movables[i];\n // }\n }\n\n if (this._activeForTweens) {\n // and a loop for tween animations\n len = this._tweenTargets.length;\n let t: ITween,\n tt: ITweenTarget,\n tweens: ITween[],\n j: number,\n vars: { [key: string]: { b: number; c: number } };\n for (i = 0; i < len; i++) {\n tt = this._tweenTargets[i];\n tweens = tt.tweens;\n for (j = 0; j < tweens.length; j++) {\n t = tweens[j];\n t.currentFrame++;\n vars = t.vars;\n for (const prop in vars) {\n tt[prop] = t.easingFunc(t.currentFrame, vars[prop].b, vars[prop].c, t.totalFrames);\n }\n\n if (t.currentFrame >= t.totalFrames) {\n if (t.onComplete) {\n t.onComplete();\n }\n if (this.removeTween(tt, t)) {\n i--;\n len--;\n }\n j--;\n }\n }\n }\n }\n }\n }\n\n /**\n * Clears all references and stops all animations and tweens.\n *\n * @method\n * @function\n * @public\n */\n public destroy(): void {\n trace('MoveEngine destroy');\n\n this._processFrame = false;\n\n if (this._ticker) {\n this._ticker.stop();\n }\n\n this.removeAllMovables();\n this.removeAllTweens();\n this._movables = null;\n this._tweenTargets = null;\n this._engine = null;\n this._ticker = null;\n }\n}\n","import { TColumnRowPair } from '../utils/map';\n\nexport class GridNode {\n public x: number;\n public y: number;\n public weight: number;\n public staticWeight: number;\n public mapPos: TColumnRowPair;\n // calculation params\n public closed: boolean;\n public parent: GridNode;\n public visited: boolean;\n public h: number;\n public g: number;\n public f: number;\n\n constructor(c: number, r: number, weight: number) {\n this.x = c;\n this.y = r;\n this.weight = weight;\n this.mapPos = { c, r };\n }\n\n public toString(): string {\n return '[' + String(this.x) + ' ' + String(this.y) + ']';\n }\n public getCost(fromNeighbor: GridNode): number {\n // Take diagonal weight into consideration.\n if (fromNeighbor && fromNeighbor.x !== this.x && fromNeighbor.y !== this.y) {\n return this.weight * 1.41421;\n }\n return this.weight;\n }\n\n public isWall(): boolean {\n return this.weight === 0;\n }\n}\n","export class BinaryHeap {\n private content: unknown[];\n private scoreFunction: (element: unknown) => number;\n\n constructor(scoreFunction: (element: unknown) => number) {\n this.content = [];\n this.scoreFunction = scoreFunction;\n }\n\n public push(element: unknown): void {\n // Add the new element to the end of the array.\n this.content.push(element);\n\n // Allow it to sink down.\n this.sinkDown(this.content.length - 1);\n }\n public pop(): unknown {\n // Store the first element so we can return it later.\n const result = this.content[0];\n // Get the element at the end of the array.\n const end = this.content.pop();\n // If there are any elements left, put the end element at the\n // start, and let it bubble up.\n if (this.content.length > 0) {\n this.content[0] = end;\n this.bubbleUp(0);\n }\n return result;\n }\n\n // private remove(node: unknown) {\n // const i = this.content.indexOf(node);\n\n // // When it is found, the process seen in 'pop' is repeated\n // // to fill up the hole.\n // const end = this.content.pop();\n\n // if (i !== this.content.length - 1) {\n // this.content[i] = end;\n\n // if (this.scoreFunction(end) < this.scoreFunction(node)) {\n // this.sinkDown(i);\n // }\n // else {\n // this.bubbleUp(i);\n // }\n // }\n // }\n public size(): number {\n return this.content.length;\n }\n public rescoreElement(node: unknown): void {\n this.sinkDown(this.content.indexOf(node));\n }\n private sinkDown(n: number): void {\n // Fetch the element that has to be sunk.\n const element = this.content[n];\n\n // When at 0, an element can not sink any further.\n while (n > 0) {\n // Compute the parent element's index, and fetch it.\n const parentN = ((n + 1) >> 1) - 1,\n parent = this.content[parentN];\n // Swap the elements if the parent is greater.\n if (this.scoreFunction(element) < this.scoreFunction(parent)) {\n this.content[parentN] = element;\n this.content[n] = parent;\n // Update 'n' to continue at the new position.\n n = parentN;\n }\n // Found a parent that is less, no need to sink any further.\n else {\n break;\n }\n }\n }\n private bubbleUp(n: number): void {\n // Look up the target element and its score.\n const length = this.content.length,\n element = this.content[n],\n elemScore = this.scoreFunction(element);\n let conditionMet = true;\n while (conditionMet) {\n // Compute the indices of the child elements.\n const child2N = (n + 1) << 1,\n child1N = child2N - 1;\n // This is used to store the new position of the element, if any.\n let swap = null,\n child1Score;\n // If the first child exists (is inside the array)...\n if (child1N < length) {\n // Look it up and compute its score.\n const child1 = this.content[child1N];\n child1Score = this.scoreFunction(child1);\n\n // If the score is less than our element's, we need to swap.\n if (child1Score < elemScore) {\n swap = child1N;\n }\n }\n\n // Do the same checks for the other child.\n if (child2N < length) {\n const child2 = this.content[child2N],\n child2Score = this.scoreFunction(child2);\n if (child2Score < (swap === null ? elemScore : child1Score)) {\n swap = child2N;\n }\n }\n\n // If the element needs to be moved, swap it, and continue.\n if (swap !== null) {\n this.content[n] = this.content[swap];\n this.content[swap] = element;\n n = swap;\n }\n // Otherwise, we are done.\n else {\n conditionMet = false;\n break;\n }\n }\n }\n}\n","import { BinaryHeap } from './BinaryHeap';\nimport { GridNode } from './GridNode';\n\nexport type PathFindingHeuristicFunction = (pos0: GridNode, pos1: GridNode) => number;\nexport type PathFindingSearchOptions = {\n heuristic?: PathFindingHeuristicFunction;\n closest?: boolean;\n};\nexport type PathFindingOptions = {\n diagonal?: boolean;\n closest?: boolean;\n};\n\n// Based on http://github.com/bgrins/javascript-astar v0.4.0\n\n/**\n * Includes all path finding logic.\n *\n * @class PathFinding\n */\nexport class PathFinding {\n /**\n * @property {Array(Array(GridNode))} grid\n * @private\n */\n private grid: GridNode[][];\n /**\n * @property {boolean} diagonal\n * @private\n */\n private diagonal: boolean;\n /**\n * Active heuristic method to use\n * @property\n * @private\n */\n private heuristic: PathFindingHeuristicFunction;\n\n private closest: boolean;\n\n private nodes: GridNode[];\n private dirtyNodes: GridNode[];\n\n /**\n * See list of heuristics: http://theory.stanford.edu/~amitp/GameProgramming/Heuristics.html\n *\n * @property\n * @private\n * @static\n */\n private static readonly HEURISTICS: {\n [key in 'manhattan' | 'diagonal']: PathFindingHeuristicFunction;\n } = {\n manhattan: (pos0: GridNode, pos1: GridNode) => {\n const d1 = Math.abs(pos1.x - pos0.x);\n const d2 = Math.abs(pos1.y - pos0.y);\n return d1 + d2;\n },\n diagonal: (pos0: GridNode, pos1: GridNode) => {\n const D = 1;\n const D2 = Math.sqrt(2);\n const d1 = Math.abs(pos1.x - pos0.x);\n const d2 = Math.abs(pos1.y - pos0.y);\n return D * (d1 + d2) + (D2 - 2 * D) * Math.min(d1, d2);\n },\n };\n /**\n * Constructor function for the PathFinding class.\n *\n * @constructor\n *\n * @param mapSizeC {number} number of columns\n * @param mapSizeR {number} number of rows\n * @param options {PathFindingOptions} settings for the search algorithm, default `{}`\n */\n constructor(mapSizeC: number, mapSizeR: number, options: PathFindingOptions = {}) {\n //define map\n this.nodes = [];\n this.diagonal = !!options.diagonal;\n this.heuristic = this.diagonal ? PathFinding.HEURISTICS.diagonal : PathFinding.HEURISTICS.manhattan;\n this.closest = !!options.closest;\n this.grid = [];\n let c = 0,\n r = 0,\n node: GridNode;\n for (c = 0; c < mapSizeC; c++) {\n this.grid[c] = [];\n for (r = 0; r < mapSizeR; r++) {\n node = new GridNode(c, r, 1);\n this.grid[c][r] = node;\n this.nodes.push(node);\n }\n }\n this.init();\n }\n\n /**\n * Cleans/resets all nodes.\n *\n * @method init\n * @private\n */\n private init(): void {\n this.dirtyNodes = [];\n for (let i = 0; i < this.nodes.length; i++) {\n this.cleanNode(this.nodes[i]);\n }\n }\n\n // /**\n // * Cleans only dirty nodes.\n // *\n // * @method cleanDirty\n // * @private\n // */\n // private cleanDirty(): void {\n // for (let i = 0; i < this.dirtyNodes.length; i++) {\n // this.cleanNode(this.dirtyNodes[i]);\n // }\n // this.dirtyNodes = [];\n // }\n\n /**\n * Marks a node as dirty.\n *\n * @method markDirty\n * @private\n * @param node {TRAVISO.PathFinding.GridNode} node to be marked\n */\n private markDirty(node: GridNode): void {\n this.dirtyNodes.push(node);\n }\n\n /**\n * Finds adjacent/neighboring cells of a single node.\n *\n * @method neighbors\n * @param node {TRAVISO.PathFinding.GridNode} source node\n * @return {Array(TRAVISO.PathFinding.GridNode)} an array of available cells\n */\n private neighbors(node: GridNode): GridNode[] {\n const ret = [],\n x = node.x,\n y = node.y,\n grid = this.grid;\n\n // West\n if (grid[x - 1] && grid[x - 1][y]) {\n ret.push(grid[x - 1][y]);\n }\n // East\n if (grid[x + 1] && grid[x + 1][y]) {\n ret.push(grid[x + 1][y]);\n }\n // South\n if (grid[x] && grid[x][y - 1]) {\n ret.push(grid[x][y - 1]);\n }\n // North\n if (grid[x] && grid[x][y + 1]) {\n ret.push(grid[x][y + 1]);\n }\n\n if (this.diagonal) {\n // Southwest\n if (grid[x - 1] && grid[x - 1][y - 1]) {\n ret.push(grid[x - 1][y - 1]);\n }\n // Southeast\n if (grid[x + 1] && grid[x + 1][y - 1]) {\n ret.push(grid[x + 1][y - 1]);\n }\n // Northwest\n if (grid[x - 1] && grid[x - 1][y + 1]) {\n ret.push(grid[x - 1][y + 1]);\n }\n // Northeast\n if (grid[x + 1] && grid[x + 1][y + 1]) {\n ret.push(grid[x + 1][y + 1]);\n }\n }\n return ret;\n }\n\n public toString(): string {\n const graphString: string[] = [],\n nodes = this.grid; // when using grid\n let rowDebug: number[], row: GridNode[], x: number, len: number, y: number, l: number;\n for (x = 0, len = nodes.length; x < len; x++) {\n rowDebug = [];\n row = nodes[x];\n for (y = 0, l = row.length; y < l; y++) {\n rowDebug.push(row[y].weight);\n }\n graphString.push(rowDebug.join(' '));\n }\n return graphString.join('\\n');\n }\n\n /**\n * Solves path finding for the given source and destination locations.\n *\n * @method solve\n * @private\n * @param originC {number} column index of the source location\n * @param originR {number} row index of the source location\n * @param destC {number} column index of the destination location\n * @param destR {number} row index of the destination location\n * @return {Array(Object)} solution path\n */\n public solve(originC: number, originR: number, destC: number, destR: number): GridNode[] {\n const start = this.grid[originC][originR];\n const end = this.grid[destC][destR];\n const result = this.search(start, end, {\n heuristic: this.heuristic,\n closest: this.closest,\n });\n return result && result.length > 0 ? result : null;\n }\n\n /**\n * Finds available adjacent cells of an area defined by location and size.\n *\n * @method getAdjacentOpenCells\n * @param cellC {number} column index of the location\n * @param cellR {number} row index of the location\n * @param sizeC {number} column size of the area\n * @param sizeR {number} row size of the area\n * @return {Array(Object)} an array of available cells\n */\n public getAdjacentOpenCells(cellC: number, cellR: number, sizeC: number, sizeR: number): GridNode[] {\n let r: number,\n c: number,\n cellArray: GridNode[] = [];\n for (r = cellR; r > cellR - sizeR; r--) {\n for (c = cellC; c < cellC + sizeC; c++) {\n // NOTE: concat is browser dependent. It is fastest for Chrome. Might be a good idea to use for loop or \"a.push.apply(a, b);\" for other browsers\n cellArray = cellArray.concat(this.neighbors(this.grid[c][r]));\n }\n }\n return cellArray;\n }\n\n private pathTo(node: GridNode): GridNode[] {\n let curr = node;\n const path: GridNode[] = [];\n while (curr.parent) {\n path.push(curr);\n curr = curr.parent;\n }\n // return path.reverse();\n return path;\n }\n\n private getHeap(): BinaryHeap {\n return new BinaryHeap((node: unknown) => (node as GridNode).f);\n }\n\n /**\n * Perform an A* Search on a graph given a start and end node.\n *\n * @method\n * @function\n * @private\n *\n * @param start {GridNode} beginning node of search\n * @param end {GridNode} end node of the search\n * @param options {Object} Search options\n * @return {Array(GridNode)} resulting list of nodes\n */\n private search(start: GridNode, end: GridNode, options: PathFindingSearchOptions = {}): GridNode[] {\n this.init();\n\n const heuristic = options.heuristic || PathFinding.HEURISTICS.manhattan;\n const closest = options.closest || false;\n\n const openHeap = this.getHeap();\n let closestNode = start; // set the start node to be the closest if required\n\n start.h = heuristic(start, end);\n\n openHeap.push(start);\n\n while (openHeap.size() > 0) {\n // Grab the lowest f(x) to process next. Heap keeps this sorted for us.\n const currentNode: GridNode = openHeap.pop() as GridNode;\n\n // End case -- result has been found, return the traced path.\n if (currentNode === end) {\n return this.pathTo(currentNode);\n }\n\n // Normal case -- move currentNode from open to closed, process each of its neighbors.\n currentNode.closed = true;\n\n // Find all neighbors for the current node.\n const neighbors = this.neighbors(currentNode);\n\n for (let i = 0, il = neighbors.length; i < il; ++i) {\n const neighbor = neighbors[i];\n\n if (neighbor.closed || neighbor.isWall()) {\n // Not a valid node to process, skip to next neighbor.\n continue;\n }\n\n // The g score is the shortest distance from start to current node.\n // We need to check if the path we have arrived at this neighbor is the shortest one we have seen yet.\n const gScore = currentNode.g + neighbor.getCost(currentNode),\n beenVisited = neighbor.visited;\n\n if (!beenVisited || gScore < neighbor.g) {\n // Found an optimal (so far) path to this node. Take score for node to see how good it is.\n neighbor.visited = true;\n neighbor.parent = currentNode;\n neighbor.h = neighbor.h || heuristic(neighbor, end);\n neighbor.g = gScore;\n neighbor.f = neighbor.g + neighbor.h;\n this.markDirty(neighbor);\n if (closest) {\n // If the neighbor is closer than the current closestNode or if it's equally close but has\n // a cheaper path than the current closest node then it becomes the closest node\n if (\n neighbor.h < closestNode.h ||\n (neighbor.h === closestNode.h && neighbor.g < closestNode.g)\n ) {\n closestNode = neighbor;\n }\n }\n\n if (!beenVisited) {\n // Pushing to heap will put it in proper place based on the 'f' value.\n openHeap.push(neighbor);\n } else {\n // Already seen the node, but since it has been re-scored we need to reorder it in the heap\n openHeap.rescoreElement(neighbor);\n }\n }\n }\n }\n\n if (closest) {\n return this.pathTo(closestNode);\n }\n\n // No result was found - empty array signifies failure to find path.\n return [];\n }\n\n private cleanNode(node: GridNode): void {\n node.f = 0;\n node.g = 0;\n node.h = 0;\n node.visited = false;\n node.closed = false;\n node.parent = null;\n }\n\n /**\n * Checks if the location is occupied/available or not.\n *\n * @method isCellFilled\n * @param c {number} column index of the location\n * @param r {number} row index of the location\n * @return {Array(Object)} if the location is not available\n */\n public isCellFilled(c: number, r: number): boolean {\n if (this.grid[c][r].weight === 0) {\n return true;\n }\n return false;\n }\n\n /**\n * Sets individual cell state for ground layer.\n *\n * @method setCell\n * @param c {number} column index of the location\n * @param r {number} row index of the location\n * @param movable {boolean} free to move or not\n */\n public setCell(c: number, r: number, movable: number): void {\n this.grid[c][r].staticWeight = this.grid[c][r].weight = movable;\n }\n\n /**\n * Sets individual cell state for objects layer.\n *\n * @method setDynamicCell\n * @param c {number} column index of the location\n * @param r {number} row index of the location\n * @param movable {boolean} free to move or not\n */\n public setDynamicCell(c: number, r: number, movable: number): void {\n // if it is movable by static tile property\n if (this.grid[c][r].staticWeight !== 0) {\n this.grid[c][r].weight = movable;\n }\n }\n\n /**\n * Clears all references.\n *\n * @method\n * @function\n * @public\n */\n public destroy(): void {\n this.grid = null;\n this.nodes = null;\n this.dirtyNodes = null;\n this.heuristic = null;\n }\n}\n","import {\n Texture,\n Container,\n Graphics,\n InteractionData,\n InteractionEvent,\n Loader,\n Sprite,\n DisplayObject,\n} from 'pixi.js';\nimport { ObjectView } from './ObjectView';\nimport { TileView } from './TileView';\nimport { MoveEngine, IMovable, ITweenTarget } from './MoveEngine';\nimport { GridNode } from '../pathFinding/GridNode';\nimport { PathFinding } from '../pathFinding/PathFinding';\nimport { existy, getDist, isInPolygon, mathMap } from '../utils/calculations';\nimport { KEY_EMPTY_TILE, KEY_NO_OBJECTS, PF_ALGORITHMS } from '../utils/constants';\nimport { trace } from '../utils/trace';\nimport {\n TColumnRowPair,\n getDirBetween,\n TMapData,\n IMapDataObject,\n MapDataObjectVisual,\n ObjectInfoInteractionOffsets,\n ObjectInfoTextureNames,\n ObjectVisualKey,\n TPositionPair,\n} from '../utils/map';\n\n/**\n * Type declaration for position frame setting.\n */\nexport type TPositionFrame = {\n /** x position of the frame */\n x: number;\n /** y position of the frame */\n y: number;\n /** width of the frame */\n w: number;\n /** height of the frame */\n h: number;\n};\n/**\n * Type declaration for engine-specific configuration.\n */\nexport type TEngineConfiguration = {\n /**\n * minimum scale that the PIXI.Container for the map can get, default 0.5\n * @default 0.5\n */\n minScale?: number;\n /**\n * maximum scale that the PIXI.Container for the map can get, default 1.5\n * @default 1.5\n */\n maxScale?: number;\n /** minimum zoom level, engine defined */\n minZoom?: number;\n /** maximum zoom level, engine defined */\n maxZoom?: number;\n /**\n * zoom increment amount calculated by the engine according to user settings, default 0.5\n * @default 0.5\n */\n zoomIncrement?: number;\n /**\n * used to calculate zoom increment, defined by user, default 5\n * @default 5\n */\n numberOfZoomLevels?: number;\n /**\n * initial zoom level of the map, default 0\n * @default 0\n */\n initialZoomLevel?: number;\n /**\n * specifies whether to zoom instantly or with a tween animation, default false\n * @default false\n */\n instantCameraZoom?: boolean;\n\n /**\n * height of a single isometric tile, default 74\n * @default 74\n */\n tileHeight?: number;\n /**\n * the angle between the top-left edge and the horizontal diagonal of a isometric quad, default 30\n * @default 30\n */\n isoAngle?: number;\n\n /**\n * frame to position the engine, default `{ x : 0, y : 0, w : 800, h : 600 }`\n * @default { x : 0, y : 0, w : 800, h : 600 }\n */\n initialPositionFrame?: TPositionFrame;\n\n /**\n * the type of path finding algorithm two use, default `TRAVISO.PF_ALGORITHMS.ASTAR_ORTHOGONAL`\n * @default TRAVISO.PF_ALGORITHMS.ASTAR_ORTHOGONAL\n */\n pathFindingType?: number;\n /**\n * whether to return the path to the closest node if the target is unreachable, default false\n * @default false\n */\n pathFindingClosest?: boolean;\n\n /**\n * defines if the camera will follow the current controllable or not, default true\n * @default true\n */\n followCharacter?: boolean;\n /**\n * specifies whether the camera moves instantly or with a tween animation to the target location, default false\n * @default false\n */\n instantCameraRelocation?: boolean;\n /**\n * specifies whether the map-objects will be moved to target location instantly or with an animation, default false\n * @default false\n */\n instantObjectRelocation?: boolean;\n\n /**\n * Make objects transparent when the controllable is behind them, default true\n * @default true\n */\n changeTransparencies?: boolean;\n\n /**\n * Highlight the path when the current controllable moves on the map, default true\n * @default true\n */\n highlightPath?: boolean;\n /**\n * Highlight the target tile when the current controllable moves on the map, default true\n * @default true\n */\n highlightTargetTile?: boolean;\n /**\n * Animate the tile highlights, default true\n * @default true\n */\n tileHighlightAnimated?: boolean;\n /**\n * Color code for the tile highlight fill (this will be overridden if a highlight-image is defined), default 0x80d7ff\n * @default 0x80d7ff\n */\n tileHighlightFillColor?: number;\n /**\n * Alpha value for the tile highlight fill (this will be overridden if a highlight-image is defined), default 0.5\n * @default 0.5\n */\n tileHighlightFillAlpha?: number;\n /**\n * Color code for the tile highlight stroke (this will be overridden if a highlight-image is defined), default 0xFFFFFF\n * @default 0xFFFFFF\n */\n tileHighlightStrokeColor?: number;\n /**\n * Alpha value for the tile highlight stroke (this will be overridden if a highlight-image is defined), default 1.0\n * @default 1.0\n */\n tileHighlightStrokeAlpha?: number;\n /**\n * When a tile selected don't move the controllable immediately but still call 'tileSelectCallback', default false\n * @default false\n */\n dontAutoMoveToTile?: boolean;\n /**\n * Looks for a path every time an object moves to a new tile (set to false if you don't have other moving objects on your map), default true\n * @default true\n */\n checkPathOnEachTile?: boolean;\n\n /**\n * Enable dragging the map with touch-and-touchmove or mousedown-and-mousemove on the map, default true\n * @default true\n */\n mapDraggable?: boolean;\n\n /**\n * Background color, if defined the engine will create a solid colored background for the map, default null\n * @default null\n */\n backgroundColor?: number;\n /**\n * Creates a mask using the position frame defined by 'initialPositionFrame' property or the 'posFrame' parameter that is passed to 'repositionContent' method, default false\n * @default false\n */\n useMask?: boolean;\n\n /** The path to the json file that defines map data, required */\n mapDataPath: string;\n /**\n * Array of paths to the assets that are desired to be loaded by traviso, no need to use if assets are already loaded to PIXI cache, default null\n * @default null\n */\n assetsToLoad?: string[];\n\n /**\n * Callback function that will be called once everything is loaded and engine instance is ready, default null\n * @default null\n */\n engineInstanceReadyCallback?: (engineInstance: EngineView) => unknown;\n /**\n * Callback function that will be called when a tile is selected (call params will be the row and column indexes of the tile selected), default null\n * @default null\n */\n tileSelectCallback?: (r: number, c: number) => unknown;\n /**\n * Callback function that will be called when a tile with an interactive map-object on it is selected (call param will be the object selected), default null\n * @default null\n */\n objectSelectCallback?: (objectView: ObjectView) => unknown;\n /**\n * Callback function that will be called when any moving object reaches its destination (call param will be the moving object itself), default null\n * @default null\n */\n objectReachedDestinationCallback?: (objectView: ObjectView) => unknown;\n /**\n * Callback function that will be called when any moving object is in move and there are other objects on the next tile, default null\n * @default null\n */\n otherObjectsOnTheNextTileCallback?: (objectView: ObjectView, otherObjectViews: ObjectView[]) => unknown;\n /**\n * Callback function that will be called every time an objects direction or position changed, default null\n * @default null\n */\n objectUpdateCallback?: (objectView: ObjectView) => unknown;\n};\n\n/**\n * Main PIXI.Container class to hold all views within the engine and all map related logic.\n *\n * @class EngineView\n * @extends PIXI.Container\n */\nexport class EngineView extends Container {\n /**\n * Internal property holding the engine configuration.\n *\n * @property\n * @private\n * @internal\n */\n private _config: TEngineConfiguration;\n\n /**\n * The default height of a single isometric tile\n *\n * @default 74\n * @property\n * @private\n * @static\n */\n private static readonly DEFAULT_TILE_H: number = 74;\n\n /**\n * The default angle (in degrees) between the top-left edge and the horizontal diagonal of a isometric quad\n *\n * @default 30\n * @property\n * @private\n * @static\n */\n private static readonly DEFAULT_ISO_ANGLE: number = 30;\n\n /**\n * Half-height of a single isometric tile\n *\n * @default 37\n * @property\n * @public\n */\n public readonly tileHalfHeight: number;\n\n /**\n * Half-width of a single isometric tile\n *\n * @default 64\n * @property\n * @public\n */\n public readonly tileHalfWidth: number;\n\n /**\n * Variable holding the parsed and processed map data\n *\n * @property\n * @public\n */\n public mapData: TMapData;\n\n /**\n * MoveEngine instance to handle all animations and tweens\n *\n * @property\n * @public\n */\n public moveEngine: MoveEngine;\n /**\n * Current scale of the map's display object\n *\n * @property\n * @private\n * @internal\n */\n private _currentScale: number;\n /**\n * Current zoom amount of the map\n *\n * @property\n * @private\n * @internal\n */\n private _currentZoom: number;\n /**\n * Active position frame for the engine.\n *\n * @property\n * @private\n * @internal\n */\n private _posFrame: TPositionFrame = { x: 0, y: 0, w: 800, h: 600 };\n /**\n * Active external center point for the engine.\n *\n * @property\n * @private\n * @internal\n */\n private _externalCenter: TPositionPair;\n\n /**\n * Solid colored background\n *\n * @property\n * @private\n * @internal\n */\n private _bg: Graphics;\n /**\n * Mask graphics for the mask\n *\n * @property\n * @private\n * @internal\n */\n private _mapMask: Graphics;\n /**\n * Display object for the map visuals\n *\n * @property\n * @private\n * @internal\n */\n private _mapContainer: Container;\n /**\n * Display object for the ground/terrain visuals\n *\n * @property\n * @private\n * @internal\n */\n private _groundContainer: Container;\n /**\n * Display object for the map-object visuals\n *\n * @property\n * @private\n * @internal\n */\n private _objContainer: Container;\n /**\n * Number of rows in the isometric map\n *\n * @property\n * @private\n * @internal\n */\n private _mapSizeR: number;\n /**\n * Number of columns in the isometric map\n *\n * @property\n * @private\n * @internal\n */\n private _mapSizeC: number;\n /**\n * Array to hold map-tiles\n *\n * @property\n * @private\n * @internal\n */\n private _tileArray: TileView[][];\n /**\n * Array to hold map-objects\n *\n * @property\n * @private\n * @internal\n */\n private _objArray: ObjectView[][][];\n /**\n * PathFinding instance to handle all path finding logic\n *\n * @property\n * @private\n * @internal\n */\n private _pathFinding: PathFinding;\n /**\n * Current controllable map-object that will be the default object to move in user interactions\n *\n * @property\n * @private\n * @internal\n */\n private _currentControllable: ObjectView;\n /**\n * Vertices of the map\n *\n * @property\n * @private\n * @internal\n */\n private _mapVertices: number[][];\n /**\n * Total width of all ground tiles\n *\n * @property\n * @private\n * @internal\n */\n private _mapVisualWidthReal: number;\n /**\n * Total height of all ground tiles\n *\n * @property\n * @private\n * @internal\n */\n private _mapVisualHeightReal: number;\n /**\n * @property\n * @private\n * @internal\n */\n private _currentFocusLocation: TColumnRowPair;\n /**\n * @property\n * @private\n * @internal\n */\n private _mapVisualWidthScaled: number;\n /**\n * @default `false`\n * @property\n * @private\n * @internal\n */\n private _dragging: boolean = false;\n /**\n * @property\n * @private\n * @internal\n */\n private _dragInitStartingX: number;\n /**\n * @property\n * @private\n * @internal\n */\n private _dragInitStartingY: number;\n /**\n * @property\n * @private\n * @internal\n */\n private _dragPrevStartingX: number;\n /**\n * @property\n * @private\n * @internal\n */\n private _dragPrevStartingY: number;\n /**\n * @property\n * @private\n * @internal\n */\n private onMouseUp_binded: (event: InteractionEvent) => void;\n /**\n * @property\n * @private\n * @internal\n */\n private onMouseDown_binded: (event: InteractionEvent) => void;\n /**\n * @property\n * @private\n * @internal\n */\n private onMouseMove_binded: (event: InteractionEvent) => void;\n\n /**\n * Constructor method for the main PIXI.Container class to hold all views within the engine and all map related logic.\n *\n * @constructor\n * @param config {TEngineConfiguration} configuration object for the isometric engine instance\n */\n constructor(config: TEngineConfiguration) {\n super();\n\n this.onMouseUp_binded = this.onMouseUp.bind(this);\n this.onMouseDown_binded = this.onMouseDown.bind(this);\n this.onMouseMove_binded = this.onMouseMove.bind(this);\n\n this._config = config;\n\n // set the properties that are set by default when not defined by the user\n this._config.followCharacter = existy(this._config.followCharacter) ? this._config.followCharacter : true;\n this._config.changeTransparencies = existy(this._config.changeTransparencies)\n ? this._config.changeTransparencies\n : true;\n this._config.highlightPath = existy(this._config.highlightPath) ? this._config.highlightPath : true;\n this._config.highlightTargetTile = existy(this._config.highlightTargetTile)\n ? this._config.highlightTargetTile\n : true;\n this._config.tileHighlightAnimated = existy(this._config.tileHighlightAnimated)\n ? this._config.tileHighlightAnimated\n : true;\n this._config.tileHighlightFillColor = existy(this._config.tileHighlightFillColor)\n ? this._config.tileHighlightFillColor\n : 0x80d7ff;\n this._config.tileHighlightFillAlpha = existy(this._config.tileHighlightFillAlpha)\n ? this._config.tileHighlightFillAlpha\n : 0.5;\n this._config.tileHighlightStrokeColor = existy(this._config.tileHighlightStrokeColor)\n ? this._config.tileHighlightStrokeColor\n : 0xffffff;\n this._config.tileHighlightStrokeAlpha = existy(this._config.tileHighlightStrokeAlpha)\n ? this._config.tileHighlightStrokeAlpha\n : 1.0;\n this._config.dontAutoMoveToTile = existy(this._config.dontAutoMoveToTile)\n ? this._config.dontAutoMoveToTile\n : false;\n this._config.checkPathOnEachTile = existy(this._config.checkPathOnEachTile)\n ? this._config.checkPathOnEachTile\n : true;\n this._config.mapDraggable = existy(this._config.mapDraggable) ? this._config.mapDraggable : true;\n this._config.isoAngle = existy(this._config.isoAngle) ? this._config.isoAngle : EngineView.DEFAULT_ISO_ANGLE;\n this._config.tileHeight = existy(this._config.tileHeight) ? this._config.tileHeight : EngineView.DEFAULT_TILE_H;\n\n this.setZoomParameters(\n this._config.minScale,\n this._config.maxScale,\n this._config.numberOfZoomLevels,\n this._config.initialZoomLevel,\n this._config.instantCameraZoom\n );\n\n this.tileHalfHeight = this._config.tileHeight / 2;\n this.tileHalfWidth = this.tileHalfHeight * Math.tan(((90 - this._config.isoAngle) * Math.PI) / 180);\n // this.TILE_W = this.tileHalfWidth * 2;\n\n this.loadAssetsAndData();\n }\n\n /**\n * Handles loading of necessary assets and map data for the given engine instance.\n *\n * @method\n * @function\n * @private\n * @internal\n */\n private loadAssetsAndData(): void {\n if (!this._config.mapDataPath) {\n throw new Error(\n \"TRAVISO: No JSON-file path defined for map data. Please check your configuration object that you pass to the 'getEngineInstance' method.\"\n );\n } else if (this._config.mapDataPath.split('.').pop() !== 'json') {\n throw new Error('TRAVISO: Invalid map-data file path. This file has to be a json file.');\n }\n\n const loader = new Loader();\n loader.add('mapData', this._config.mapDataPath);\n\n if (this._config.assetsToLoad && this._config.assetsToLoad.length > 0) {\n loader.add(this._config.assetsToLoad);\n }\n\n loader.load(this.assetsAndDataLoaded.bind(this));\n\n // TRAVISO.loadData();\n }\n\n /**\n * Handles loading of map data for the given engine instance.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param loader {Loader} PIXI's loader instance\n */\n private assetsAndDataLoaded(loader: Loader): void {\n // console.log('assetsAndDataLoaded', resources.mapData.data);\n\n const mapData: TMapData = loader.resources.mapData.data as TMapData;\n\n // initial controls\n\n if (!existy(mapData.initialControllableLocation)) {\n trace(\n \"Map-data file warning: No 'initialControllableLocation' defined. Ignore this warning if you are adding it later manually.\"\n );\n } else if (\n !existy(mapData.initialControllableLocation.columnIndex) ||\n !existy(mapData.initialControllableLocation.rowIndex)\n ) {\n trace(\"Map-data file warning: 'initialControllableLocation' exists but it is not defined properly.\");\n mapData.initialControllableLocation = null;\n }\n\n if (mapData.tileHighlightImage && !mapData.tileHighlightImage.path) {\n trace(\"Map-data file warning: 'tileHighlightImage' exists but its 'path' is not defined properly.\");\n mapData.tileHighlightImage = null;\n }\n\n if (mapData.singleGroundImage && !mapData.singleGroundImage.path) {\n trace(\"Map-data file warning: 'singleGroundImage' exists but its 'path' is not defined properly.\");\n mapData.singleGroundImage = null;\n }\n\n let i: number, j: number, arr: string[];\n let rows = mapData.groundMap;\n mapData.groundMapData = [];\n for (i = 0; i < rows.length; i++) {\n arr = String(rows[i].row).replace(/\\s/g, '').split(',');\n // remove empty spaces in a row and cast to an array\n for (j = arr.length; j--; ) {\n arr[j] = arr[j] || KEY_EMPTY_TILE;\n }\n mapData.groundMapData[i] = arr;\n }\n\n rows = mapData.objectsMap;\n mapData.objectsMapData = [];\n for (i = 0; i < rows.length; i++) {\n arr = String(rows[i].row).replace(/\\s/g, '').split(',');\n // remove empty spaces in a row and cast to an array\n for (j = arr.length; j--; ) {\n arr[j] = arr[j] || KEY_NO_OBJECTS;\n }\n mapData.objectsMapData[i] = arr;\n }\n\n if (!existy(mapData.tiles)) {\n trace(\"Map-data file warning: No 'tiles' defined.\");\n mapData.tiles = {};\n }\n if (!existy(mapData.objects)) {\n trace(\"Map-data file warning: No 'objects' defined.\");\n mapData.objects = {};\n }\n\n let obj: IMapDataObject,\n objId: string,\n visual: MapDataObjectVisual,\n visualId: ObjectVisualKey,\n interactionOffsets: ObjectInfoInteractionOffsets,\n oTextures: ObjectInfoTextureNames,\n m: number,\n n: number;\n for (objId in mapData.objects) {\n obj = mapData.objects[objId];\n if (!existy(obj.visuals)) {\n throw new Error('TRAVISO: No visuals defined in data-file for object type: ' + objId);\n }\n obj.id = objId;\n if (!existy(obj.rowSpan)) {\n obj.rowSpan = 1;\n }\n if (!existy(obj.columnSpan)) {\n obj.columnSpan = 1;\n }\n\n oTextures = {};\n interactionOffsets = {};\n\n for (visualId in obj.visuals) {\n visual = obj.visuals[visualId];\n\n if (existy(visual.ipor) && existy(visual.ipoc)) {\n interactionOffsets[visualId] = {\n c: Number(visual.ipoc),\n r: Number(visual.ipor),\n };\n }\n\n // visual = (visual as MapDataObjectVisualType1);\n if (visual.frames && visual.frames.length > 0) {\n oTextures[visualId] = [];\n for (m = 0; m < visual.frames.length; m++) {\n oTextures[visualId][m] = visual.frames[m].path;\n }\n } else {\n if (!visual.path || !visual.extension || !visual.numberOfFrames || visual.numberOfFrames < 1) {\n throw new Error(\n 'TRAVISO: Invalid or missing visual attributes detected in data-file for visual with id: ' +\n visualId\n );\n }\n\n oTextures[visualId] = [];\n if (visual.numberOfFrames === 1) {\n oTextures[visualId][0] = visual.path + '.' + visual.extension;\n } else {\n n = 0;\n for (m = visual.startIndex; m < visual.numberOfFrames; m++) {\n oTextures[visualId][n++] = visual.path + String(m) + '.' + visual.extension;\n }\n }\n }\n }\n\n obj.textureNames = oTextures;\n obj.io = interactionOffsets;\n obj.f = !!obj.floor;\n obj.nt = !!obj.noTransparency;\n obj.m = !!obj.movable;\n obj.i = !!obj.interactive;\n }\n\n delete mapData.objectsMap;\n delete mapData.groundMap;\n\n this.mapData = mapData;\n\n this.onAllAssetsLoaded();\n }\n\n /**\n * This method is being called whenever all the assets are\n * loaded and engine is ready to initialize.\n *\n * @method\n * @function\n * @private\n * @internal\n */\n private onAllAssetsLoaded(): void {\n trace('All assets loaded');\n\n this.moveEngine = new MoveEngine(this);\n\n this._currentScale = 1.0;\n this._currentZoom = 0;\n\n this._posFrame = this._config.initialPositionFrame || {\n x: 0,\n y: 0,\n w: 800,\n h: 600,\n };\n\n this._externalCenter = {\n x: this._posFrame.w >> 1,\n y: this._posFrame.h >> 1,\n };\n\n this.createMap();\n\n this.repositionContent(this._config.initialPositionFrame);\n\n this.enableInteraction();\n\n if (this._config.engineInstanceReadyCallback) {\n this._config.engineInstanceReadyCallback(this);\n }\n }\n\n /**\n * Creates the map and setups necessary parameters for future map calculations.\n *\n * @method\n * @function\n * @private\n * @internal\n */\n private createMap(): void {\n // create background\n if (this._config.backgroundColor) {\n this._bg = new Graphics();\n this.addChild(this._bg);\n }\n\n // create mask\n if (this._config.useMask) {\n this._mapMask = new Graphics();\n this.addChild(this._mapMask);\n }\n\n // create containers for visual map elements\n this._mapContainer = new Container();\n this.addChild(this._mapContainer);\n\n // Define two layers of maps\n // One for the world and one for the objects (static/dynamic) over it\n // This enables us not to update the whole world in every move but instead just update the object depths over it\n\n this._groundContainer = new Container();\n this._mapContainer.addChild(this._groundContainer);\n\n this._objContainer = new Container();\n this._mapContainer.addChild(this._objContainer);\n\n const groundMapData = this.mapData.groundMapData;\n const objectsMapData = this.mapData.objectsMapData;\n\n const initialControllableLocation = this.mapData.initialControllableLocation;\n\n // set map size\n this._mapSizeR = groundMapData.length;\n this._mapSizeC = groundMapData[0].length;\n\n // add ground image first if it is defined\n let groundImageSprite: Sprite;\n if (this.mapData.singleGroundImage) {\n groundImageSprite = new Sprite(Texture.from(this.mapData.singleGroundImage.path));\n this._groundContainer.addChild(groundImageSprite);\n\n groundImageSprite.scale.set(this.mapData.singleGroundImage.scale || 1);\n }\n\n // create arrays to hold tiles and objects\n this._tileArray = [];\n this._objArray = [];\n let i, j;\n for (i = 0; i < this._mapSizeR; i++) {\n this._tileArray[i] = [];\n this._objArray[i] = [];\n for (j = 0; j < this._mapSizeC; j++) {\n this._tileArray[i][j] = null;\n this._objArray[i][j] = null;\n }\n }\n\n // Map data is being sent to path finding and after this point\n // its content will be different acc to the path-finding algorithm.\n // It is still being stored in engine.mapData but you must be aware\n // of the structure if you want to use it after this point.\n this._pathFinding = new PathFinding(this._mapSizeC, this._mapSizeR, {\n diagonal: this._config.pathFindingType === PF_ALGORITHMS.ASTAR_DIAGONAL,\n closest: this._config.pathFindingClosest,\n });\n\n let tile;\n for (i = 0; i < this._mapSizeR; i++) {\n for (j = this._mapSizeC - 1; j >= 0; j--) {\n this._tileArray[i][j] = null;\n if (groundMapData[i][j] && groundMapData[i][j] !== KEY_EMPTY_TILE) {\n tile = new TileView(this, groundMapData[i][j]);\n tile.position.x = this.getTilePosXFor(i, j);\n tile.position.y = this.getTilePosYFor(i, j);\n tile.mapPos = { c: j, r: i };\n this._tileArray[i][j] = tile;\n this._groundContainer.addChild(tile);\n\n if (!tile.isMovableTo) {\n this._pathFinding.setCell(j, i, 0);\n }\n } else {\n this._pathFinding.setCell(j, i, 0);\n }\n }\n }\n\n let obj,\n floorObjectFound = false;\n for (i = 0; i < this._mapSizeR; i++) {\n for (j = this._mapSizeC - 1; j >= 0; j--) {\n this._objArray[i][j] = null;\n if (objectsMapData[i][j] && objectsMapData[i][j] !== KEY_NO_OBJECTS) {\n obj = new ObjectView(this, objectsMapData[i][j]);\n obj.position.x = this.getTilePosXFor(i, j);\n obj.position.y = this.getTilePosYFor(i, j) + this.tileHalfHeight;\n obj.mapPos = { c: j, r: i };\n\n if (!floorObjectFound && obj.isFloorObject) {\n floorObjectFound = true;\n }\n\n this._objContainer.addChild(obj);\n\n this.addObjRefToLocation(obj, obj.mapPos);\n\n // if (initialControllableLocation && initialControllableLocation.c === j && initialControllableLocation.r === i)\n if (\n initialControllableLocation &&\n initialControllableLocation.columnIndex === j &&\n initialControllableLocation.rowIndex === i\n ) {\n this._currentControllable = obj;\n }\n }\n }\n }\n if (floorObjectFound) {\n // run the loop again to bring the other objects on top of the floor objects\n let a, k;\n for (i = 0; i < this._mapSizeR; i++) {\n for (j = this._mapSizeC - 1; j >= 0; j--) {\n a = this._objArray[i][j];\n if (a) {\n for (k = 0; k < a.length; k++) {\n if (!a[k].isFloorObject) {\n this._objContainer.addChild(a[k]);\n }\n }\n }\n }\n }\n }\n // cacheAsBitmap: for now this creates problem with tile highlights\n // this._groundContainer.cacheAsBitmap = true;\n\n this._mapVertices = [\n [this.getTilePosXFor(0, 0) - this.tileHalfWidth, this.getTilePosYFor(0, 0)],\n [\n this.getTilePosXFor(0, this._mapSizeC - 1),\n this.getTilePosYFor(0, this._mapSizeC - 1) - this.tileHalfHeight,\n ],\n [\n this.getTilePosXFor(this._mapSizeR - 1, this._mapSizeC - 1) + this.tileHalfWidth,\n this.getTilePosYFor(this._mapSizeR - 1, this._mapSizeC - 1),\n ],\n [\n this.getTilePosXFor(this._mapSizeR - 1, 0),\n this.getTilePosYFor(this._mapSizeR - 1, 0) + this.tileHalfHeight,\n ],\n ];\n\n this._mapVisualWidthReal =\n this.getTilePosXFor(this._mapSizeR - 1, this._mapSizeC - 1) - this.getTilePosXFor(0, 0);\n this._mapVisualHeightReal =\n this.getTilePosYFor(this._mapSizeR - 1, 0) - this.getTilePosYFor(0, this._mapSizeC - 1);\n\n if (groundImageSprite) {\n groundImageSprite.position.x =\n this._mapVertices[0][0] + this.tileHalfWidth + (this._mapVisualWidthReal - groundImageSprite.width) / 2;\n groundImageSprite.position.y =\n this._mapVertices[1][1] +\n this.tileHalfHeight +\n (this._mapVisualHeightReal - groundImageSprite.height) / 2;\n }\n\n this.zoomTo(this._config.initialZoomLevel, true);\n\n if (this._config.followCharacter && initialControllableLocation) {\n // this.centralizeToLocation(initialControllableLocation.c, initialControllableLocation.r, true);\n this.centralizeToLocation(\n initialControllableLocation.columnIndex,\n initialControllableLocation.rowIndex,\n true\n );\n } else {\n this.centralizeToCurrentExternalCenter(true);\n }\n }\n\n /**\n * Calculates 2D X position of a tile, given its column and row indices.\n *\n * @method\n * @function\n * @public\n *\n * @param r {number} row index of the tile\n * @param c {number} column index of the tile\n * @return {number} 2D X position of a tile\n */\n public getTilePosXFor(r: number, c: number): number {\n return c * this.tileHalfWidth + r * this.tileHalfWidth;\n }\n\n /**\n * Calculates 2D Y position of a tile, given its column and row indices.\n *\n * @method\n * @function\n * @public\n *\n * @param r {number} row index of the tile\n * @param c {number} column index of the tile\n * @return {number} 2D Y position of a tile\n */\n public getTilePosYFor(r: number, c: number): number {\n return r * this.tileHalfHeight - c * this.tileHalfHeight;\n }\n\n /**\n * Shows or hides the display object that includes the objects-layer\n *\n * @method\n * @function\n * @public\n *\n * @param show {boolean} show the object layer, default `false`\n */\n public showHideObjectLayer(show: boolean = false): void {\n this._objContainer.visible = show;\n }\n /**\n * Shows or hides the display object that includes the ground/terrain layer\n *\n * @method\n * @function\n * @public\n *\n * @param show {boolean} show the ground layer, default `false`\n */\n public showHideGroundLayer(show: boolean = false): void {\n this._groundContainer.visible = show;\n }\n /**\n * Returns the TileView instance that sits in the location given by row and column indices.\n *\n * @method\n * @function\n * @public\n *\n * @param r {number} row index of the tile\n * @param c {number} column index of the tile\n * @return {TileView} the tile in the location given\n */\n public getTileAtRowAndColumn(r: number, c: number): TileView {\n return this._tileArray[r][c];\n }\n /**\n * Returns all the ObjectView instances referenced to the given location with the specified row and column indices.\n *\n * @method\n * @function\n * @public\n *\n * @param r {number} the row index of the map location\n * @param c {number} the column index of the map location\n * @return {Array(ObjectView)} an array of map-objects referenced to the given location\n */\n public getObjectsAtRowAndColumn(r: number, c: number): ObjectView[] {\n return this._objArray[r][c];\n }\n /**\n * Returns all the ObjectView instances referenced to the given location.\n *\n * @method\n * @function\n * @public\n *\n * @param pos {TColumnRowPair} position object including row and column coordinates\n * @return {Array(ObjectView)} an array of map-objects referenced to the given location\n */\n public getObjectsAtLocation(pos: TColumnRowPair): ObjectView[] {\n return this._objArray[pos.r][pos.c];\n }\n\n /**\n * Creates and adds a predefined (in json file) map-object to the map using the specified object type-id.\n *\n * @method\n * @function\n * @public\n *\n * @param type {number} type-id of the object as defined in the json file\n * @param pos {TColumnRowPair} position object including row and column coordinates\n * @return {ObjectView} the newly created map-object\n */\n public createAndAddObjectToLocation(type: string, pos: TColumnRowPair): ObjectView {\n return this.addObjectToLocation(new ObjectView(this, type), pos);\n }\n /**\n * Adds an already-created object to the map.\n *\n * @method\n * @function\n * @public\n *\n * @param obj {ObjectView} a map-object to add to the map and the given location\n * @param pos {TColumnRowPair} position object including row and column coordinates\n * @return {ObjectView} the newly added object\n */\n public addObjectToLocation(obj: ObjectView, pos: TColumnRowPair): ObjectView {\n obj.position.x = this.getTilePosXFor(pos.r, pos.c);\n obj.position.y = this.getTilePosYFor(pos.r, pos.c) + this.tileHalfHeight;\n obj.mapPos = { c: pos.c, r: pos.r };\n\n this._objContainer.addChild(obj);\n\n this.addObjRefToLocation(obj, obj.mapPos);\n this.arrangeDepthsFromLocation(obj.isFloorObject ? { c: this._mapSizeC - 1, r: 0 } : obj.mapPos);\n\n return obj;\n }\n\n /**\n * Enables adding external custom display objects to the specified location.\n * This method should be used for the objects that are not already defined in json file and don't have a type-id.\n * The resulting object will be independent of engine mechanics apart from depth controls.\n *\n * @method\n * @function\n * @public\n *\n * @param displayObject {PIXI.DisplayObject} object to be added to location\n * @param displayObject.isMovableTo {boolean} if the object can be moved onto by other map-objects, default true\n * @param displayObject.columnSpan {number} number of tiles that map-object covers horizontally on the isometric map\n * @param displayObject.rowSpan {number} number of tiles that map-object covers vertically on the isometric map\n * @param pos {TColumnRowPair} position object including row and column coordinates\n * @return {PIXI.DisplayObject} the newly added object\n */\n public addCustomObjectToLocation(displayObject: ObjectView, pos: TColumnRowPair): DisplayObject {\n displayObject.isMovableTo = existy(displayObject.isMovableTo) ? displayObject.isMovableTo : true;\n displayObject.columnSpan = displayObject.columnSpan || 1;\n displayObject.rowSpan = displayObject.rowSpan || 1;\n\n return this.addObjectToLocation(displayObject, pos);\n\n // this.removeObjRefFromLocation(displayObject, pos);\n }\n /**\n * Removes the object and its references from the map.\n *\n * @method\n * @function\n * @public\n *\n * @param obj {ObjectView} Either an external display object or a map-object (ObjectView)\n * @param pos {TColumnRowPair} position object including row and column coordinates. If not defined, the engine will use `obj.mapPos` to remove the map-object\n */\n public removeObjectFromLocation(obj: ObjectView, pos: TColumnRowPair): void {\n pos = pos || obj.mapPos;\n this._objContainer.removeChild(obj);\n this.removeObjRefFromLocation(obj, pos);\n }\n /**\n * Centralizes and zooms the EngineView instance to the object specified.\n *\n * @method focusMapToObject\n * @param obj {ObjectView} the object that map will be focused with respect to\n * @param obj.mapPos {Object} the object that holds the location of the map-object on the map\n * @param obj.mapPos.c {number} the column index of the map location\n * @param obj.mapPos.r {number} the row index of the map location\n * @param obj.columnSpan {number} number of tiles that map-object covers horizontally on the isometric map\n * @param obj.rowSpan {number} number of tiles that map-object covers vertically on the isometric map\n */\n public focusMapToObject(obj: ObjectView): void {\n this.focusMapToLocation(obj.mapPos.c + (obj.columnSpan - 1) / 2, obj.mapPos.r - (obj.rowSpan - 1) / 2, 0);\n }\n /**\n * Centralizes and zooms the EngineView instance to the map location specified by row and column index.\n *\n * @method focusMapToLocation\n * @param c {number} the column index of the map location\n * @param r {number} the row index of the map location\n * @param zoomAmount {number} targeted zoom level for focusing\n */\n public focusMapToLocation(c: number, r: number, zoomAmount: number): void {\n // NOTE: using zoomTo instead of setScale causes centralizeToPoint to be called twice (no visual problem)\n this.zoomTo(zoomAmount, false);\n this.centralizeToLocation(c, r, this._config.instantCameraRelocation);\n }\n /**\n * Centralizes the EngineView instance to the object specified.\n *\n * @method centralizeToObject\n * @param obj {ObjectView} the object that map will be centralized with respect to\n * @param obj.mapPos {Object} the object that holds the location of the map-object on the map\n * @param obj.mapPos.c {number} the column index of the map location\n * @param obj.mapPos.r {number} the row index of the map location\n */\n public centralizeToObject(obj: ObjectView): void {\n this.centralizeToLocation(obj.mapPos.c, obj.mapPos.r, this._config.instantCameraRelocation);\n }\n /**\n * Centralizes the EngineView instance to the map location specified by row and column index.\n *\n * @method centralizeToLocation\n * @param c {number} the column index of the map location\n * @param r {number} the row index of the map location\n * @param [instantRelocate=false] {boolean} specifies if the camera move will be animated or instant\n */\n public centralizeToLocation(c: number, r: number, instantRelocate: boolean): void {\n this._currentFocusLocation = { c: c, r: r };\n const px =\n this._externalCenter.x + (this._mapVisualWidthScaled >> 1) - this.getTilePosXFor(r, c) * this._currentScale;\n const py = this._externalCenter.y - this.getTilePosYFor(r, c) * this._currentScale;\n this.centralizeToPoint(px, py, instantRelocate);\n }\n /**\n * Centralizes the EngineView instance to the current location of the attention/focus.\n *\n * @method centralizeToCurrentFocusLocation\n * @param [instantRelocate=false] {boolean} specifies if the camera move will be animated or instant\n */\n public centralizeToCurrentFocusLocation(instantRelocate: boolean): void {\n this.centralizeToLocation(this._currentFocusLocation.c, this._currentFocusLocation.r, instantRelocate);\n }\n /**\n * External center is the central point of the frame defined by the user to be used as the visual size of the engine.\n * This method centralizes the EngineView instance with respect to this external center-point.\n *\n * @method\n * @function\n * @public\n *\n * @param instantRelocate {boolean} specifies if the camera move will be animated or instant\n */\n public centralizeToCurrentExternalCenter(instantRelocate: boolean): void {\n if (this._externalCenter) {\n this._currentFocusLocation = {\n c: this._mapSizeC >> 1,\n r: this._mapSizeR >> 1,\n };\n this.centralizeToPoint(this._externalCenter.x, this._externalCenter.y, instantRelocate);\n }\n }\n /**\n * Centralizes the EngineView instance to the points specified.\n *\n * @method\n * @function\n * @public\n *\n * @param px {number} the x coordinate of the center point with respect to EngineView frame\n * @param py {number} the y coordinate of the center point with respect to EngineView frame\n * @param instantRelocate {boolean} specifies if the relocation will be animated or instant\n */\n public centralizeToPoint(px: number, py: number, instantRelocate: boolean): void {\n if (this._tileArray) {\n px = px - (this._mapVisualWidthScaled >> 1);\n if (\n (existy(instantRelocate) && instantRelocate) ||\n (!existy(instantRelocate) && this._config.instantCameraRelocation)\n ) {\n this._mapContainer.position.x = px;\n this._mapContainer.position.y = py;\n } else {\n this.moveEngine.addTween(\n this._mapContainer.position as unknown as ITweenTarget,\n 0.5,\n { x: px, y: py },\n 0,\n 'easeInOut',\n true\n );\n }\n }\n }\n /**\n * Sets all the parameters related to zooming in and out.\n *\n * @method\n * @function\n * @public\n *\n * @param minScale {number} minimum scale that the PIXI.Container for the map can get, default 0.5\n * @param maxScale {number} maximum scale that the PIXI.Container for the map can get, default 1.5\n * @param numberOfZoomLevels {number} used to calculate zoom increment, defined by user, default 5\n * @param initialZoomLevel {number} initial zoom level of the map, default 0\n * @param instantCameraZoom {boolean} specifies whether to zoom instantly or with a tween animation, default false\n */\n public setZoomParameters(\n minScale: number = 0.5,\n maxScale: number = 1.5,\n numberOfZoomLevels: number = 5,\n initialZoomLevel: number = 0,\n instantCameraZoom: boolean = false\n ): void {\n this._config.minScale = minScale;\n this._config.maxScale = maxScale;\n this._config.minZoom = -1;\n this._config.maxZoom = 1;\n this._config.zoomIncrement = existy(numberOfZoomLevels)\n ? numberOfZoomLevels <= 1\n ? 0\n : 2 / (numberOfZoomLevels - 1)\n : 0.5;\n\n this._config.initialZoomLevel = initialZoomLevel;\n this._config.instantCameraZoom = instantCameraZoom;\n }\n /**\n * Sets map's scale.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param s {number} Scale amount for both x and y coordinates\n * @param instantZoom {boolean} Specifies if the scaling will be animated or instant\n */\n private setScale(s: number, instantZoom: boolean): void {\n if (s < this._config.minScale) {\n s = this._config.minScale;\n } else if (s > this._config.maxScale) {\n s = this._config.maxScale;\n }\n this._currentScale = s;\n this._mapVisualWidthScaled = this._mapVisualWidthReal * this._currentScale;\n // this.mapVisualHeightScaled = this._mapVisualHeightReal * this._currentScale;\n\n if ((existy(instantZoom) && instantZoom) || (!existy(instantZoom) && this._config.instantCameraZoom)) {\n this._mapContainer.scale.set(this._currentScale);\n } else {\n this.moveEngine.addTween(\n this._mapContainer.scale as unknown as ITweenTarget,\n 0.5,\n { x: this._currentScale, y: this._currentScale },\n 0,\n 'easeInOut',\n true\n );\n }\n }\n /**\n * Zooms camera by to the amount given.\n *\n * @method\n * @function\n * @public\n *\n * @param zoomAmount {number} specifies zoom amount (between -1 and 1). Use -1, -0.5, 0, 0,5, 1 for better results.\n * @param instantZoom {boolean} specifies whether to zoom instantly or with a tween animation\n */\n public zoomTo(zoomAmount: number, instantZoom: boolean): void {\n zoomAmount = zoomAmount || 0;\n let s = mathMap(\n zoomAmount,\n this._config.minZoom,\n this._config.maxZoom,\n this._config.minScale,\n this._config.maxScale,\n true\n );\n s = Math.round(s * 10) / 10;\n\n this._currentZoom = mathMap(\n s,\n this._config.minScale,\n this._config.maxScale,\n this._config.minZoom,\n this._config.maxZoom,\n true\n );\n\n this._externalCenter = this._externalCenter\n ? this._externalCenter\n : { x: this._mapVisualWidthScaled >> 1, y: 0 };\n const diff = {\n x: this._mapContainer.position.x + (this._mapVisualWidthScaled >> 1) - this._externalCenter.x,\n y: this._mapContainer.position.y - this._externalCenter.y,\n };\n const oldScale = this._currentScale;\n\n this.setScale(s, instantZoom);\n\n const ratio = this._currentScale / oldScale;\n this.centralizeToPoint(\n this._externalCenter.x + diff.x * ratio,\n this._externalCenter.y + diff.y * ratio,\n (existy(instantZoom) && instantZoom) || (!existy(instantZoom) && this._config.instantCameraZoom)\n );\n\n // trace(\"scalingTo: \" + this._currentScale);\n // trace(\"zoomingTo: \" + this._currentZoom);\n }\n /**\n * Zooms the camera one level out.\n *\n * @method\n * @function\n * @public\n *\n * @param instantZoom {boolean} Specifies whether to zoom instantly or with a tween animation\n */\n public zoomOut(instantZoom: boolean): void {\n this.zoomTo(this._currentZoom - this._config.zoomIncrement, instantZoom);\n }\n /**\n * Zooms the camera one level in.\n *\n * @method zoomIn\n * @param [instantZoom=false] {boolean} specifies whether to zoom instantly or with a tween animation\n */\n public zoomIn(instantZoom: boolean): void {\n this.zoomTo(this._currentZoom + this._config.zoomIncrement, instantZoom);\n }\n /**\n * Returns the current controllable map-object.\n *\n * @method getCurrentControllable\n * @return {ObjectView} current controllable map-object\n */\n public getCurrentControllable(): ObjectView {\n return this._currentControllable;\n }\n /**\n * Sets a map-object as the current controllable. This object will be moving in further relevant user interactions.\n *\n * @method setCurrentControllable\n * @param obj {ObjectView} object to be set as current controllable\n * @param obj.mapPos {Object} object including r and c coordinates\n * @param obj.mapPos.c {number} the column index of the map location\n * @param obj.mapPos.r {number} the row index of the map location\n */\n public setCurrentControllable(obj: ObjectView): void {\n this._currentControllable = obj;\n }\n /**\n * Adds a reference of the given map-object to the given location in the object array.\n * This should be called when an object moved or transferred to the corresponding location.\n * Uses objects size property to add its reference to all relevant cells.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param obj {ObjectView} object to be bind to location\n * @param obj.columnSpan {number} number of tiles that map-object covers horizontally on the isometric map\n * @param obj.rowSpan {number} number of tiles that map-object covers vertically on the isometric map\n * @param pos {TColumnRowPair} position object including row and column coordinates\n */\n private addObjRefToLocation(obj: ObjectView, pos: TColumnRowPair): void {\n let k, m;\n for (k = pos.c; k < pos.c + obj.columnSpan; k++) {\n for (m = pos.r; m > pos.r - obj.rowSpan; m--) {\n this.addObjRefToSingleLocation(obj, { c: k, r: m });\n }\n }\n }\n /**\n * Adds a reference of the given map-object to the given location in the object array.\n * Updates the cell as movable or not according to the object being movable onto or not.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param obj {ObjectView} object to be bind to location\n * @param obj.isMovableTo {boolean} is the object is movable onto by the other objects or not\n * @param pos {TColumnRowPair} position object including row and column coordinates\n */\n private addObjRefToSingleLocation(obj: ObjectView, pos: TColumnRowPair): void {\n if (!this._objArray[pos.r][pos.c]) {\n this._objArray[pos.r][pos.c] = [];\n }\n const index = this._objArray[pos.r][pos.c].indexOf(obj);\n if (index < 0) {\n this._objArray[pos.r][pos.c].push(obj);\n }\n\n if (!obj.isMovableTo) {\n this._pathFinding.setDynamicCell(pos.c, pos.r, 0);\n }\n }\n /**\n * Removes references of the given map-object from the given location in the object array.\n * This should be called when an object moved or transferred from the corresponding location.\n * Uses objects size property to remove its references from all relevant cells.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param obj {ObjectView} object to be bind to location\n * @param obj.columnSpan {number} number of tiles that map-object covers horizontally on the isometric map\n * @param obj.rowSpan {number} number of tiles that map-object covers vertically on the isometric map\n * @param pos {TColumnRowPair} position object including row and column coordinates\n */\n private removeObjRefFromLocation(obj: ObjectView, pos: TColumnRowPair): void {\n let k, m;\n for (k = pos.c; k < pos.c + obj.columnSpan; k++) {\n for (m = pos.r; m > pos.r - obj.rowSpan; m--) {\n this.removeObjRefFromSingleLocation(obj, { c: k, r: m });\n }\n }\n }\n /**\n * Removes a reference of the given map-object from the given location in the object array.\n * Updates the cell as movable or not according to the other object references in the same cell.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param obj {ObjectView} object to be bind to location\n * @param pos {TColumnRowPair} position object including row and column coordinates\n */\n private removeObjRefFromSingleLocation(obj: ObjectView, pos: TColumnRowPair): void {\n if (this._objArray[pos.r][pos.c]) {\n const index = this._objArray[pos.r][pos.c].indexOf(obj);\n if (index > -1) {\n this._objArray[pos.r][pos.c].splice(index, 1);\n }\n if (this._objArray[pos.r][pos.c].length === 0) {\n this._pathFinding.setDynamicCell(pos.c, pos.r, 1);\n this._objArray[pos.r][pos.c] = null;\n } else {\n const a = this._objArray[pos.r][pos.c];\n const l = a.length;\n for (let i = 0; i < l; i++) {\n if (!a[i].isMovableTo) {\n this._pathFinding.setDynamicCell(pos.c, pos.r, 0);\n break;\n } else if (i === l - 1) {\n this._pathFinding.setDynamicCell(pos.c, pos.r, 1);\n }\n }\n }\n }\n }\n // /**\n // * Removes all map-object references from the given location in the object array.\n // *\n // * @private\n // * @method removeAllObjectRefsFromLocation\n // * @param {TColumnRowPair} pos object including r and c coordinates\n // */\n // private removeAllObjectRefsFromLocation(pos: TColumnRowPair): void {\n // if (this._objArray[pos.r][pos.c]) {\n // this._pathFinding.setDynamicCell(pos.c, pos.r, 1);\n // this._objArray[pos.r][pos.c] = null;\n // }\n // }\n /**\n * Sets alphas of the map-objects referenced to the given location.\n *\n * @method changeObjAlphasInLocation\n * @param value {number} alpha value, should be between 0 and 1\n * @param pos {TColumnRowPair} position object including row and column coordinates\n */\n public changeObjAlphasInLocation(value: number, pos: TColumnRowPair): void {\n const a = this._objArray[pos.r][pos.c];\n if (a) {\n const l = a.length;\n for (let i = 0; i < l; i++) {\n if (!a[i].isFloorObject && !a[i].noTransparency) {\n a[i].alpha = value;\n }\n }\n }\n }\n /**\n * Sets a map-object's location and logically moves it to the new location.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param obj {ObjectView} map-object to be moved\n * @param obj.mapPos {Object} object including r and c coordinates\n * @param obj.mapPos.c {number} the column index of the map location\n * @param obj.mapPos.r {number} the row index of the map location\n * @param pos {TColumnRowPair} position object including row and column coordinates\n */\n private arrangeObjLocation(obj: ObjectView, pos: TColumnRowPair): void {\n this.removeObjRefFromLocation(obj, obj.mapPos);\n this.addObjRefToLocation(obj, pos);\n\n obj.mapPos = { c: pos.c, r: pos.r };\n }\n /**\n * Sets occlusion transparencies according to given map-object's location.\n * This method only works for user-controllable object.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param obj {ObjectView} current controllable map-object\n * @param prevPos {TColumnRowPair} previous location of the map-object in terms of row and column coordinates\n * @param pos {TColumnRowPair} new location of the map-object in terms of row and column coordinates\n */\n private arrangeObjTransparencies(obj: ObjectView, prevPos: TColumnRowPair, pos: TColumnRowPair): void {\n if (this._config.changeTransparencies) {\n if (this._currentControllable === obj) {\n if (prevPos.c > 0) {\n this.changeObjAlphasInLocation(1, {\n c: prevPos.c - 1,\n r: prevPos.r,\n });\n }\n if (prevPos.c > 0 && prevPos.r < this._mapSizeR - 1) {\n this.changeObjAlphasInLocation(1, {\n c: prevPos.c - 1,\n r: prevPos.r + 1,\n });\n }\n if (prevPos.r < this._mapSizeR - 1) {\n this.changeObjAlphasInLocation(1, {\n c: prevPos.c,\n r: prevPos.r + 1,\n });\n }\n\n if (pos.c > 0) {\n this.changeObjAlphasInLocation(0.7, {\n c: pos.c - 1,\n r: pos.r,\n });\n }\n if (pos.c > 0 && pos.r < this._mapSizeR - 1) {\n this.changeObjAlphasInLocation(0.7, {\n c: pos.c - 1,\n r: pos.r + 1,\n });\n }\n if (pos.r < this._mapSizeR - 1) {\n this.changeObjAlphasInLocation(0.7, {\n c: pos.c,\n r: pos.r + 1,\n });\n }\n }\n\n // TODO: check if there is a way not to update main character alpha each time\n obj.alpha = 1;\n }\n }\n /**\n * Arranges depths (z-index) of the map-objects starting from the given location.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param pos {TColumnRowPair} position object including row and column coordinates\n */\n private arrangeDepthsFromLocation(pos: TColumnRowPair): void {\n let a, i, j, k;\n for (i = pos.r; i < this._mapSizeR; i++) {\n for (j = pos.c; j >= 0; j--) {\n a = this._objArray[i][j];\n if (a) {\n for (k = 0; k < a.length; k++) {\n if (!a[k].isFloorObject) {\n this._objContainer.addChild(a[k]);\n }\n }\n }\n }\n }\n }\n /**\n * Clears the highlight for the old path and highlights the new path on map.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param currentPath {Array(GridNode)} the old path to clear the highlight from\n * @param newPath {Array(GridNode)} the new path to highlight\n */\n private arrangePathHighlight(currentPath: GridNode[], newPath: GridNode[]): void {\n let i: number, tile: TileView, pathItem: GridNode;\n if (currentPath) {\n for (i = 0; i < currentPath.length; i++) {\n pathItem = currentPath[i];\n if (!newPath || newPath.indexOf(pathItem) === -1) {\n tile = this._tileArray[pathItem.mapPos.r][pathItem.mapPos.c];\n tile.setHighlighted(false, !this._config.tileHighlightAnimated);\n }\n }\n }\n if (newPath) {\n for (i = 0; i < newPath.length; i++) {\n pathItem = newPath[i];\n if (!currentPath || currentPath.indexOf(pathItem) === -1) {\n tile = this._tileArray[pathItem.mapPos.r][pathItem.mapPos.c];\n tile.setHighlighted(true, !this._config.tileHighlightAnimated);\n }\n }\n }\n }\n /**\n * Stops a moving object.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param obj {IMovable} map-object to be moved on path\n */\n private stopObject(obj: IMovable): void {\n obj.currentPath = null;\n obj.currentTarget = null;\n obj.currentTargetTile = null;\n this.moveEngine.removeMovable(obj);\n }\n /**\n * Moves the specified map-object through a path.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param obj {IMovable} map-object to be moved on path\n * @param path {Array(GridNode)} path to move object on\n * @param speed {number} speed of the map-object to be used during movement, if not defined it uses previous speed or the MoveEngine's default speed, default null\n */\n private moveObjThrough(obj: IMovable, path: GridNode[], speed: number = null): void {\n if (this._config.instantObjectRelocation) {\n const tile = this._tileArray[path[0].mapPos.r][path[0].mapPos.c];\n obj.position.x = tile.position.x;\n obj.position.y = tile.position.y + this.tileHalfHeight;\n this.arrangeObjTransparencies(obj, obj.mapPos, tile.mapPos);\n this.arrangeObjLocation(obj, tile.mapPos);\n this.arrangeDepthsFromLocation(tile.mapPos);\n } else {\n if (this._config.highlightPath && this._currentControllable === obj) {\n this.arrangePathHighlight(obj.currentPath, path);\n }\n\n if (obj.currentTarget) {\n // trace(\"Object has a target, update the path with the new one\");\n // this.moveEngine.addNewPathToObject(obj, path, speed);\n this.stopObject(obj);\n }\n\n this.moveEngine.prepareForMove(obj, path, speed);\n\n obj.currentTargetTile = obj.currentPath[obj.currentPathStep];\n\n this.onObjMoveStepBegin(obj, obj.currentPath[obj.currentPathStep].mapPos);\n }\n }\n /**\n * Sets up the engine at the beginning of each tile change move for the specified object\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param obj {IMovable} map-object that is being moved\n * @param pos {TColumnRowPair} position object including row and column coordinates\n * @return {boolean} if the target tile was available and map-object has moved\n */\n private onObjMoveStepBegin(obj: IMovable, pos: TColumnRowPair): boolean {\n // trace(\"onObjMoveStepBegin\");\n // Note that mapPos is being updated prior to movement\n\n obj.currentDirection = getDirBetween(obj.mapPos.r, obj.mapPos.c, pos.r, pos.c);\n\n obj.changeVisualToDirection(obj.currentDirection, true);\n\n // check if the next target pos is still empty\n if (!this._pathFinding.isCellFilled(pos.c, pos.r)) {\n // pos is movable\n // this.arrangeObjTransparencies(obj, obj.mapPos, pos);\n // this.arrangeObjLocation(obj, pos);\n // this.arrangeDepthsFromLocation(obj.mapPos);\n\n // if there is other object(s) on the target tile, notify the game\n // const objects = this.getObjectsAtLocation(pos);\n // if (objects && objects.length > 1)\n // {\n // if (this._config.otherObjectsOnTheNextTileCallback) { this._config.otherObjectsOnTheNextTileCallback( obj, objects ); }\n // }\n\n this.moveEngine.setMoveParameters(obj, pos);\n\n this.moveEngine.addMovable(obj);\n\n return true;\n } else {\n // pos is NOT movable\n this.moveEngine.removeMovable(obj);\n this.checkAndMoveObjectToLocation(obj, obj.currentPath[0].mapPos);\n\n return false;\n }\n }\n /**\n * Sets up the engine at the end of each tile change move for the specified object\n *\n * @method\n * @function\n * @public\n * @internal\n *\n * @param obj {IMovable} map-object that is being moved\n */\n public onObjMoveStepEnd(obj: IMovable): void {\n //trace(\"onObjMoveStepEnd\");\n\n obj.currentPathStep--;\n obj.currentTarget = null;\n obj.currentTargetTile = null;\n const pathEnded = 0 > obj.currentPathStep;\n this.moveEngine.removeMovable(obj);\n\n if (!pathEnded) {\n if (this._config.checkPathOnEachTile) {\n this.checkAndMoveObjectToLocation(obj, obj.currentPath[0].mapPos);\n } else {\n obj.currentPath.splice(obj.currentPath.length - 1, 1);\n this.moveObjThrough(obj, obj.currentPath);\n }\n } else {\n // reached to the end of the path\n obj.changeVisualToDirection(obj.currentDirection, false);\n }\n\n if (this._currentControllable === obj) {\n const tile = this._tileArray[obj.mapPos.r][obj.mapPos.c];\n tile.setHighlighted(false, !this._config.tileHighlightAnimated);\n\n // if (this._config.followCharacter) { this.centralizeToLocation(obj.mapPos.c, obj.mapPos.r); }\n }\n\n if (pathEnded && this._config.objectReachedDestinationCallback) {\n this._config.objectReachedDestinationCallback(obj);\n }\n }\n\n /**\n * Checks and follows a character\n *\n * @method\n * @function\n * @public\n * @internal\n *\n * @param obj {IMovable} map-object to check if it is being followed\n */\n public checkForFollowCharacter(obj: IMovable): void {\n if (this._config.followCharacter && this._currentControllable === obj) {\n this._currentFocusLocation = { c: obj.mapPos.c, r: obj.mapPos.r };\n const px = this._externalCenter.x - obj.position.x * this._currentScale;\n const py = this._externalCenter.y - obj.position.y * this._currentScale;\n // this.centralizeToPoint(px, py, true);\n this.moveEngine.addTween(\n this._mapContainer.position as unknown as ITweenTarget,\n 0.1,\n { x: px, y: py },\n 0,\n 'easeOut',\n true\n );\n }\n }\n\n /**\n * Checks if a map-object changes the tile it is on.\n *\n * @method\n * @function\n * @public\n * @internal\n *\n * @param obj {IMovable} map-object to be checked\n */\n public checkForTileChange(obj: IMovable): void {\n if (this._config.objectUpdateCallback) {\n this._config.objectUpdateCallback(obj);\n }\n\n const pos = { x: obj.position.x, y: obj.position.y - this.tileHalfHeight };\n // const tile = this._tileArray[obj.mapPos.r][obj.mapPos.c];\n const tile = this._tileArray[obj.currentTargetTile.mapPos.r][obj.currentTargetTile.mapPos.c];\n // move positions to parent scale\n const vertices = [];\n for (let i = 0; i < tile.vertices.length; i++) {\n vertices[i] = [tile.vertices[i][0] + tile.position.x, tile.vertices[i][1] + tile.position.y];\n }\n\n if (obj.currentTargetTile.mapPos.r !== obj.mapPos.r || obj.currentTargetTile.mapPos.c !== obj.mapPos.c) {\n if (isInPolygon(pos, vertices)) {\n this.arrangeObjTransparencies(obj, obj.mapPos, obj.currentTargetTile.mapPos);\n this.arrangeObjLocation(obj, obj.currentTargetTile.mapPos);\n this.arrangeDepthsFromLocation(obj.mapPos);\n\n // if there is other object(s) on the target tile, notify the game\n const objects = this.getObjectsAtLocation(obj.currentTargetTile.mapPos);\n if (objects && objects.length > 1) {\n if (this._config.otherObjectsOnTheNextTileCallback) {\n this._config.otherObjectsOnTheNextTileCallback(obj, objects);\n }\n }\n }\n }\n }\n\n /**\n * Searches and returns a path between two locations if there is one.\n *\n * @method\n * @function\n * @public\n *\n * @param from {TColumnRowPair} object including row and column coordinates of the source location\n * @param to {TColumnRowPair} object including row and column coordinates of the target location\n *\n * @return {Array(Object)} an array of path items defining the path\n */\n public getPath(from: TColumnRowPair, to: TColumnRowPair): GridNode[] {\n if (this._pathFinding) {\n return this._pathFinding.solve(from.c, from.r, to.c, to.r);\n } else {\n throw new Error(\"Path finding hasn't been initialized yet!\");\n }\n }\n /**\n * Checks for a path and moves the map-object on map if there is an available path\n *\n * @method\n * @function\n * @public\n *\n * @param obj {ObjectView} map-object that is being moved\n * @param tile {TileView} target map-tile or any custom object that has 'mapPos' and 'isMovableTo' defined\n * @param speed {number} speed of the map-object to be used during movement, if not defined it uses previous speed or the MoveEngine's default speed, default null\n * @return {boolean} if there is an available path to move to the target tile\n */\n public checkAndMoveObjectToTile(obj: ObjectView, tile: TileView, speed: number = null): boolean {\n if (tile.isMovableTo) {\n return this.checkAndMoveObjectToLocation(obj, tile.mapPos, speed);\n }\n return false;\n }\n /**\n * Checks for a path and moves the map-object on map if there is an available path\n *\n * @method\n * @function\n * @public\n *\n * @param obj {ObjectView} map-object that is being moved\n * @param pos {TColumnRowPair} object including row and column coordinates for the target location\n * @param speed {number} speed of the map-object to be used during movement, if not defined it uses previous speed or the MoveEngine's default speed, default null\n * @return {boolean} if there is an available path to move to the target tile\n */\n public checkAndMoveObjectToLocation(obj: ObjectView, pos: TColumnRowPair, speed: number = null): boolean {\n const path = this.getPath(obj.mapPos, pos);\n if (path) {\n // begin moving process\n this.moveObjThrough(obj as IMovable, path, speed);\n\n return path.length > 0;\n }\n return false;\n }\n /**\n * Moves the current controllable map-object to a location if available.\n *\n * @method\n * @function\n * @public\n *\n * @param pos {TColumnRowPair} object including row and column coordinates for the target location\n * @param speed {number} speed of the map-object to be used during movement, if not defined it uses previous speed or the MoveEngine's default speed, default null\n * @return {boolean} if there is an available path to move to the target tile\n */\n public moveCurrentControllableToLocation(pos: TColumnRowPair, speed: number = null): boolean {\n if (!this._currentControllable) {\n throw new Error('TRAVISO: _currentControllable is not defined!');\n }\n return this.checkAndMoveObjectToLocation(this._currentControllable, pos, speed);\n }\n /**\n * Moves the current controllable map-object to one of the adjacent available tiles of the map-object specified.\n *\n * @method\n * @function\n * @public\n *\n * @param obj {ObjectView} target map-object\n * @param speed {number} speed of the map-object to be used during movement, if not defined it uses previous speed or the MoveEngine's default speed, default null\n * @return {boolean} if there is an available path to move to the target map-object\n */\n public moveCurrentControllableToObj(obj: ObjectView, speed: number = null): boolean {\n if (!this._currentControllable) {\n throw new Error('TRAVISO: _currentControllable is not defined!');\n }\n // check if there is a preferred interaction point\n if (obj.currentInteractionOffset) {\n const targetPos = {\n c: obj.mapPos.c + obj.currentInteractionOffset.c,\n r: obj.mapPos.r + obj.currentInteractionOffset.r,\n };\n if (this.checkAndMoveObjectToLocation(this._currentControllable, targetPos, speed)) {\n return true;\n }\n }\n const cellArray = this._pathFinding.getAdjacentOpenCells(\n obj.mapPos.c,\n obj.mapPos.r,\n obj.columnSpan,\n obj.rowSpan\n );\n let tile: TileView;\n let minLength = 3000;\n let path, minPath, tempFlagHolder;\n for (let i = 0; i < cellArray.length; i++) {\n tile = this._tileArray[cellArray[i].mapPos.r][cellArray[i].mapPos.c];\n if (tile) {\n if (\n tile.mapPos.c === this._currentControllable.mapPos.c &&\n tile.mapPos.r === this._currentControllable.mapPos.r\n ) {\n // already next to the object, do nothing\n this.arrangePathHighlight((this._currentControllable as IMovable).currentPath, null);\n this.stopObject(this._currentControllable as IMovable);\n tempFlagHolder = this._config.instantObjectRelocation;\n this._config.instantObjectRelocation = true;\n this.moveObjThrough(this._currentControllable as IMovable, [\n new GridNode(tile.mapPos.c, tile.mapPos.r, 1),\n ]);\n this._config.instantObjectRelocation = tempFlagHolder;\n this._currentControllable.changeVisualToDirection(\n this._currentControllable.currentDirection,\n false\n );\n if (this._config.objectReachedDestinationCallback) {\n this._config.objectReachedDestinationCallback(this._currentControllable);\n }\n return true;\n }\n path = this.getPath(this._currentControllable.mapPos, tile.mapPos);\n if (path && path.length < minLength) {\n minLength = path.length;\n minPath = path;\n }\n }\n }\n\n if (minPath) {\n this.moveObjThrough(this._currentControllable as IMovable, minPath, speed);\n return true;\n }\n return false;\n }\n /**\n * Finds the nearest tile to the point given in the map's local scope.\n *\n * @method\n * @function\n * @public\n *\n * @param lp {TPositionPair} Point to check\n * @return {TileView} The nearest map-tile if there is one. Otherwise `null`\n */\n public getTileFromLocalPos(lp: TPositionPair): TileView {\n let closestTile: TileView = null;\n if (isInPolygon(lp, this._mapVertices)) {\n // Using nearest point instead of checking polygon vertices for each tile. Should be faster...\n // NOTE: there is an ignored bug (for better performance) that tile is not selected when u click on the far corner\n const thresh = this.tileHalfWidth / 2;\n let tile, i, j, dist;\n let closestDist = 3000;\n for (i = 0; i < this._mapSizeR; i++) {\n for (j = 0; j < this._mapSizeC; j++) {\n tile = this._tileArray[i][j];\n if (tile) {\n dist = getDist(lp, tile.position);\n if (dist < closestDist) {\n closestDist = dist;\n closestTile = tile;\n if (dist < thresh) {\n break;\n }\n }\n }\n }\n }\n }\n return closestTile;\n }\n /**\n * Checks if an interaction occurs using the interaction data coming from PIXI.\n * If there is any interaction starts necessary movements or performs necessary callbacks.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param interactionData {PIXI.InteractionData} interaction data coming from PIXI\n */\n private checkForTileClick(interactionData: InteractionData): void {\n const lp = this._mapContainer.toLocal(interactionData.global);\n const closestTile = this.getTileFromLocalPos(lp);\n if (closestTile) {\n const a = this._objArray[closestTile.mapPos.r][closestTile.mapPos.c];\n if (a) {\n for (let k = 0; k < a.length; k++) {\n if (a[k].isInteractive) {\n if (this._config.objectSelectCallback) {\n this._config.objectSelectCallback(a[k]);\n }\n break;\n }\n // TODO CHECK: this might cause issues when there is one movable and one not movable object on the same tile\n else if (a[k].isMovableTo) {\n if (\n this._config.dontAutoMoveToTile ||\n !this._currentControllable ||\n this.checkAndMoveObjectToTile(this._currentControllable, closestTile)\n ) {\n if (this._config.highlightTargetTile) {\n closestTile.setHighlighted(true, !this._config.tileHighlightAnimated);\n }\n if (this._config.tileSelectCallback) {\n this._config.tileSelectCallback(closestTile.mapPos.r, closestTile.mapPos.c);\n }\n break;\n }\n }\n }\n } else if (\n this._config.dontAutoMoveToTile ||\n !this._currentControllable ||\n this.checkAndMoveObjectToTile(this._currentControllable, closestTile)\n ) {\n if (this._config.highlightTargetTile) {\n closestTile.setHighlighted(true, !this._config.tileHighlightAnimated);\n }\n if (this._config.tileSelectCallback) {\n this._config.tileSelectCallback(closestTile.mapPos.r, closestTile.mapPos.c);\n }\n }\n }\n }\n /**\n * Enables mouse/touch interactions.\n *\n * @method\n * @function\n * @public\n */\n public enableInteraction(): void {\n // this.mousedown = this.touchstart = this.onMouseDown.bind(this);\n // this.mousemove = this.touchmove = this.onMouseMove.bind(this);\n // this.mouseup = this.mouseupout = this.touchend = this.onMouseUp.bind(this);\n this.on('pointerdown', this.onMouseDown_binded)\n .on('pointerup', this.onMouseUp_binded)\n // .on('pointerout', this.onMouseUp_binded)\n .on('pointerupoutside', this.onMouseUp_binded)\n .on('pointermove', this.onMouseMove_binded);\n this.interactive = true;\n }\n /**\n * Disables mouse/touch interactions.\n *\n * @method\n * @function\n * @public\n */\n public disableInteraction(): void {\n // this.mousedown = this.touchstart = null;\n // this.mousemove = this.touchmove = null;\n // this.mouseup = this.mouseupout = this.touchend = null;\n this.off('pointerdown', this.onMouseDown_binded)\n .off('pointerup', this.onMouseUp_binded)\n // .off('pointerout', this.onMouseUp_binded)\n .off('pointerupoutside', this.onMouseUp_binded)\n .off('pointermove', this.onMouseMove_binded);\n this.interactive = true;\n this._dragging = false;\n }\n /**\n * Checks if the given point is inside the masked area if there is a mask defined.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param p {TPositionPair} point to check\n * @return {boolean} if the point is inside the masked area\n */\n private isInteractionInMask(p: TPositionPair): boolean {\n if (this._config.useMask) {\n if (\n p.x < this._posFrame.x ||\n p.y < this._posFrame.y ||\n p.x > this._posFrame.x + this._posFrame.w ||\n p.y > this._posFrame.y + this._posFrame.h\n ) {\n return false;\n }\n }\n return true;\n }\n // ******************** START: MOUSE INTERACTIONS **************************** //\n /**\n * Handler function for mouse-down event.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param event {InteractionEvent} interaction event object\n */\n private onMouseDown(event: InteractionEvent): void {\n const globalPos = event.data.global;\n if (!this._dragging && this.isInteractionInMask(globalPos)) {\n this._dragging = true;\n //this.mouseDownTime = new Date();\n this._dragInitStartingX = this._dragPrevStartingX = globalPos.x;\n this._dragInitStartingY = this._dragPrevStartingY = globalPos.y;\n }\n }\n /**\n * Handler function for mouse-move event.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param event {InteractionEvent} interaction event object\n */\n private onMouseMove(event: InteractionEvent): void {\n if (this._dragging && this._config.mapDraggable) {\n const globalPos = event.data.global;\n this._mapContainer.position.x += globalPos.x - this._dragPrevStartingX;\n this._mapContainer.position.y += globalPos.y - this._dragPrevStartingY;\n this._dragPrevStartingX = globalPos.x;\n this._dragPrevStartingY = globalPos.y;\n }\n }\n /**\n * Handler function for mouse-up event.\n *\n * @method\n * @function\n * @private\n * @internal\n *\n * @param event {InteractionEvent} interaction event object\n */\n private onMouseUp(event: InteractionEvent): void {\n if (this._dragging) {\n this._dragging = false;\n //const passedTime = (new Date()) - this.mouseDownTime;\n const distX = event.data.global.x - this._dragInitStartingX;\n const distY = event.data.global.y - this._dragInitStartingY;\n\n if (Math.abs(distX) < 5 && Math.abs(distY) < 5) {\n // NOT DRAGGING IT IS A CLICK\n this.checkForTileClick(event.data);\n }\n }\n }\n // ********************* END: MOUSE INTERACTIONS **************************** //\n /**\n * Repositions the content according to user settings. Call this method\n * whenever you want to change the size or position of the engine.\n *\n * @method\n * @function\n * @public\n *\n * @param posFrame {TPositionFrame} frame to position the engine, default is the previously set posFrame and if not set, it is `{ x : 0, y : 0, w : 800, h : 600 }`\n */\n public repositionContent(posFrame: TPositionFrame = null): void {\n trace('EngineView repositionContent');\n\n posFrame = posFrame || this._posFrame || { x: 0, y: 0, w: 800, h: 600 };\n\n this.position.x = posFrame.x;\n this.position.y = posFrame.y;\n\n this._externalCenter = {\n x: posFrame.w >> 1,\n y: posFrame.h >> 1,\n };\n this.centralizeToCurrentFocusLocation(true);\n\n if (this._bg) {\n this._bg.clear();\n // this._bg.lineStyle(2, 0x000000, 1);\n this._bg.beginFill(this._config.backgroundColor, 1.0);\n this._bg.drawRect(0, 0, posFrame.w, posFrame.h);\n this._bg.endFill();\n }\n\n if (this._mapMask && this._mapContainer) {\n this._mapMask.clear();\n this._mapMask.beginFill(0x000000);\n this._mapMask.drawRect(0, 0, posFrame.w, posFrame.h);\n this._mapMask.endFill();\n\n this._mapContainer.mask = this._mapMask;\n }\n\n this._posFrame = posFrame;\n }\n /**\n * Clears all references and stops all animations inside the engine.\n * Call this method when you want to get rid of an engine instance.\n *\n * @method\n * @function\n * @public\n */\n public destroy(): void {\n trace('EngineView destroy');\n\n this.disableInteraction();\n\n this.moveEngine.destroy();\n this.moveEngine = null;\n\n let item, i, j, k;\n for (i = 0; i < this._mapSizeR; i++) {\n for (j = this._mapSizeC - 1; j >= 0; j--) {\n item = this._tileArray[i][j];\n if (item) {\n item.destroy();\n // this._groundContainer.removeChild(item);\n }\n this._tileArray[i][j] = null;\n\n item = this._objArray[i][j];\n if (item) {\n for (k = 0; k < item.length; k++) {\n if (item[k]) {\n item[k].destroy();\n // this._objContainer.removeChild(item[k]);\n }\n item[k] = null;\n }\n }\n this._objArray[i][j] = null;\n }\n }\n item = null;\n\n this._pathFinding.destroy();\n this._pathFinding = null;\n\n this._currentControllable = null;\n this._tileArray = null;\n this._objArray = null;\n this._bg = null;\n this._groundContainer = null;\n this._objContainer = null;\n\n if (this._mapContainer) {\n this._mapContainer.mask = null;\n this.removeChild(this._mapContainer);\n this._mapContainer = null;\n }\n if (this._mapMask) {\n this.removeChild(this._mapMask);\n this._mapMask = null;\n }\n\n this._config = null;\n this.mapData.groundMapData = null;\n this.mapData.objectsMapData = null;\n this.mapData.objects = null;\n this.mapData.tiles = null;\n this.mapData = null;\n }\n\n // Externally modifiable properties for EngineView\n /**\n * specifies whether to zoom instantly or with a tween animation\n * @property\n * @default false\n */\n public get instantCameraZoom(): boolean {\n return this._config.instantCameraZoom;\n }\n public set instantCameraZoom(value: boolean) {\n this._config.instantCameraZoom = value;\n }\n /**\n * defines if the camera will follow the current controllable or not\n * @property\n * @default true\n */\n public get followCharacter(): boolean {\n return this._config.followCharacter;\n }\n public set followCharacter(value: boolean) {\n this._config.followCharacter = value;\n }\n /**\n * specifies whether the camera moves instantly or with a tween animation to the target location\n * @property\n * @default false\n */\n public get instantCameraRelocation(): boolean {\n return this._config.instantCameraRelocation;\n }\n public set instantCameraRelocation(value: boolean) {\n this._config.instantCameraRelocation = value;\n }\n /**\n * specifies whether the map-objects will be moved to target location instantly or with an animation\n * @property\n * @default false\n */\n public get instantObjectRelocation(): boolean {\n return this._config.instantObjectRelocation;\n }\n public set instantObjectRelocation(value: boolean) {\n this._config.instantObjectRelocation = value;\n }\n /**\n * make objects transparent when the controllable is behind them\n * @property\n * @default true\n */\n public get changeTransparencies(): boolean {\n return this._config.changeTransparencies;\n }\n public set changeTransparencies(value: boolean) {\n this._config.changeTransparencies = value;\n }\n /**\n * highlight the path when the current controllable moves on the map\n * @property\n * @default true\n */\n public get highlightPath(): boolean {\n return this._config.highlightPath;\n }\n public set highlightPath(value: boolean) {\n this._config.highlightPath = value;\n }\n /**\n * Highlight the target tile when the current controllable moves on the map\n * @property\n * @default true\n */\n public get highlightTargetTile(): boolean {\n return this._config.highlightTargetTile;\n }\n public set highlightTargetTile(value: boolean) {\n this._config.highlightTargetTile = value;\n }\n /**\n * animate the tile highlights\n * @property\n * @default true\n */\n public get tileHighlightAnimated(): boolean {\n return this._config.tileHighlightAnimated;\n }\n public set tileHighlightAnimated(value: boolean) {\n this._config.tileHighlightAnimated = value;\n }\n /**\n * When a tile selected don't move the controllable immediately but still call 'tileSelectCallback'\n * @property\n * @default false\n */\n public get dontAutoMoveToTile(): boolean {\n return this._config.dontAutoMoveToTile;\n }\n public set dontAutoMoveToTile(value: boolean) {\n this._config.dontAutoMoveToTile = value;\n }\n /**\n * Engine looks for a path every time an object moves to a new tile on the path\n * (set to false if you don't have moving objects other then your controllable on your map)\n * @property\n * @default true\n */\n public get checkPathOnEachTile(): boolean {\n return this._config.checkPathOnEachTile;\n }\n public set checkPathOnEachTile(value: boolean) {\n this._config.checkPathOnEachTile = value;\n }\n /**\n * enable dragging the map with touch-and-touchmove or mousedown-and-mousemove on the map\n * @property\n * @default true\n */\n public get mapDraggable(): boolean {\n return this._config.mapDraggable;\n }\n public set mapDraggable(value: boolean) {\n this._config.mapDraggable = value;\n }\n /**\n * callback function that will be called once everything is loaded and engine instance is ready\n * @property\n * @default null\n */\n public get engineInstanceReadyCallback(): (engineInstance: EngineView) => unknown {\n return this._config.engineInstanceReadyCallback;\n }\n public set engineInstanceReadyCallback(value: (engineInstance: EngineView) => unknown) {\n this._config.engineInstanceReadyCallback = value;\n }\n /**\n * callback function that will be called when a tile is selected. Params will be the row and column indexes of the tile selected.\n * @property\n * @default null\n */\n public get tileSelectCallback(): (r: number, c: number) => unknown {\n return this._config.tileSelectCallback;\n }\n public set tileSelectCallback(value: (r: number, c: number) => unknown) {\n this._config.tileSelectCallback = value;\n }\n /**\n * callback function that will be called when a tile with an interactive map-object on it is selected. Call param will be the object selected.\n * @property\n * @default null\n */\n public get objectSelectCallback(): (objectView: ObjectView) => unknown {\n return this._config.objectSelectCallback;\n }\n public set objectSelectCallback(value: (objectView: ObjectView) => unknown) {\n this._config.objectSelectCallback = value;\n }\n /**\n * callback function that will be called when any moving object reaches its destination. Call param will be the moving object itself.\n * @property\n * @default null\n */\n public get objectReachedDestinationCallback(): (objectView: ObjectView) => unknown {\n return this._config.objectReachedDestinationCallback;\n }\n public set objectReachedDestinationCallback(value: (objectView: ObjectView) => unknown) {\n this._config.objectReachedDestinationCallback = value;\n }\n /**\n * callback function that will be called when any moving object is in move and there are other objects on the next tile. Call params will be the moving object and an array of objects on the next tile.\n * @property\n * @default null\n */\n public get otherObjectsOnTheNextTileCallback(): (\n objectView: ObjectView,\n otherObjectViews: ObjectView[]\n ) => unknown {\n return this._config.otherObjectsOnTheNextTileCallback;\n }\n public set otherObjectsOnTheNextTileCallback(\n value: (objectView: ObjectView, otherObjectViews: ObjectView[]) => unknown\n ) {\n this._config.otherObjectsOnTheNextTileCallback = value;\n }\n /**\n * callback function that will be called every time an objects direction or position changed\n * @property\n * @default null\n */\n public get objectUpdateCallback(): (objectView: ObjectView) => unknown {\n return this._config.objectUpdateCallback;\n }\n public set objectUpdateCallback(value: (objectView: ObjectView) => unknown) {\n this._config.objectUpdateCallback = value;\n }\n /**\n * alpha value for the tile highlight stroke (this will be overridden if a highlight-image is defined)\n * @property\n * @default 1.0\n */\n public get tileHighlightStrokeAlpha(): number {\n return this._config.tileHighlightStrokeAlpha;\n }\n public set tileHighlightStrokeAlpha(value: number) {\n this._config.tileHighlightStrokeAlpha = value;\n }\n /**\n * color code for the tile highlight stroke (this will be overridden if a highlight-image is defined)\n * @property\n * @default 0xFFFFFF\n */\n public get tileHighlightStrokeColor(): number {\n return this._config.tileHighlightStrokeColor;\n }\n public set tileHighlightStrokeColor(value: number) {\n this._config.tileHighlightStrokeColor = value;\n }\n /**\n * alpha value for the tile highlight fill (this will be overridden if a highlight-image is defined)\n * @property\n * @default 1.0\n */\n public get tileHighlightFillAlpha(): number {\n return this._config.tileHighlightFillAlpha;\n }\n public set tileHighlightFillAlpha(value: number) {\n this._config.tileHighlightFillAlpha = value;\n }\n /**\n * color code for the tile highlight fill (this will be overridden if a highlight-image is defined)\n * @property\n * @default 0x80d7ff\n */\n public get tileHighlightFillColor(): number {\n return this._config.tileHighlightFillColor;\n }\n public set tileHighlightFillColor(value: number) {\n this._config.tileHighlightFillColor = value;\n }\n}\n","let saidHello = false;\nconst VERSION = '$_VERSION';\n\n/**\n * Skips the hello message of renderers that are created after this is run.\n *\n * @memberof TRAVISO\n * @for TRAVISO\n *\n * @function\n * @method\n * @static\n * @public\n */\nexport function skipHello(): void {\n saidHello = true;\n}\n\n/**\n * Logs out the version information for this running instance of TRAVISO.\n * If you don't want to see this message you can run `TRAVISO.skipHello()` before\n * creating your engine.\n *\n * @memberof TRAVISO\n * @for TRAVISO\n *\n * @function\n * @method\n * @static\n * @public\n */\nexport function sayHello(): void {\n if (saidHello) {\n return;\n }\n\n if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1) {\n const args = [\n `\\n %c %c %c Traviso.js - ${VERSION} %c %c http://www.travisojs.com/ %c \\n\\n`,\n 'background: #18bc9c; padding:5px 0;',\n 'background: #18bc9c; padding:5px 0;',\n 'color: #18bc9c; background: #030307; padding:5px 0;',\n 'background: #18bc9c; padding:5px 0;',\n 'background: #5ad2ba; padding:5px 0;',\n 'background: #18bc9c; padding:5px 0;',\n ];\n\n self.console.log(...args);\n } else if (self.console) {\n self.console.log(`Traviso.js ${VERSION} - http://www.travisojs.com/`);\n }\n\n saidHello = true;\n}\n","/**\n * String of the current TRAVISO version.\n *\n * @memberof TRAVISO\n * @for TRAVISO\n *\n * @property\n * @static\n * @public\n * @constant\n */\n\nexport const VERSION: Readonly = '$_VERSION';\n","import { TEngineConfiguration, EngineView } from './map/EngineView';\nimport { sayHello } from './utils/hello';\nimport { enableDisableLogging, trace } from './utils/trace';\nimport { VERSION } from './version';\n\n/**\n * Type declaration for global traviso configuration.\n */\nexport type TTravisoConfiguration = {\n /**\n * Determines if TRAVISO can log helper text.\n * @default false\n */\n logEnabled: boolean;\n};\n\n/**\n * Main TRAVISO namespace.\n *\n * @namespace TRAVISO\n */\nexport * from './version';\nexport * from './map/EngineView';\nexport { TileView } from './map/TileView';\nexport { ObjectView } from './map/ObjectView';\nexport { skipHello } from './utils/hello';\nexport * from './utils/trace';\nexport { existy, mathMap, dotProduct, getUnit, getDist, isInPolygon } from './utils/calculations';\nexport {\n TDirection,\n TDirections,\n DIRECTIONS,\n PF_ALGORITHMS,\n TPathFindingAlgorithms,\n TPathFindingAlgorithmID,\n} from './utils/constants';\nexport { TColumnRowPair, TPositionPair } from './utils/map';\n\n/**\n * Global configuration settings for traviso\n *\n * @property\n * @private\n * @internal\n */\nlet config: TTravisoConfiguration = {\n logEnabled: false,\n};\n\n/**\n * Flag defining whether traviso is set or not\n *\n * @property\n * @private\n * @internal\n */\nlet isReady: boolean = false;\n\n/**\n * Initializes traviso global settings if it hasn't been already.\n *\n * @method\n * @function\n * @internal\n *\n * @param globalConfig {TTravisoConfiguration} configuration object for the traviso engine\n */\nconst init = (globalConfig: TTravisoConfiguration): void => {\n // do necessary checks and assignments for global settings\n if (globalConfig) {\n config = {\n ...config,\n ...globalConfig,\n };\n config.logEnabled = enableDisableLogging(globalConfig.logEnabled);\n }\n if (isReady) {\n return;\n }\n isReady = true;\n sayHello();\n trace('Traviso initiated. (Version: ' + VERSION + ')');\n};\n\n/**\n * Creates and returns an isometric engine instance with the provided configuration.\n * Also initializes traviso global settings if it hasn't been already.\n *\n * @memberof TRAVISO\n * @for TRAVISO\n *\n * @method\n * @function\n * @public\n * @static\n *\n * @param instanceConfig {TEngineConfiguration} Configuration object for the isometric instance, required\n * @param globalConfig {TTravisoConfiguration} Configuration object for the traviso engine, default null\n *\n * @returns {EngineView} A new instance of the isometric engine\n */\nexport const getEngineInstance = (\n instanceConfig: TEngineConfiguration,\n globalConfig: TTravisoConfiguration = null\n): EngineView => {\n init(globalConfig);\n return new EngineView(instanceConfig);\n};\n\nexport {};\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__assign","assign","t","s","i","n","arguments","length","apply","existy","value","mathMap","v","min1","max1","min2","max2","noOutliers","getUnit","m","Math","sqrt","x","y","isInPolygon","gp","vertices","j","testY","testX","nVert","c","getDist","p1","p2","DIRECTIONS","O","S","SW","W","NW","N","NE","E","SE","RESERVED_TEXTURE_IDS","PF_ALGORITHMS","ASTAR_ORTHOGONAL","ASTAR_DIAGONAL","logEnabled","trace","self","console","log","enableDisableLogging","enabled","getObjectInfo","engine","objectType","objInfo","mapData","objects","textures","key","textureNames","getObjectTextures","f","nt","io","rowSpan","columnSpan","Error","visualId","Texture","from","getTileInfo","tileType","tileInfo","tiles","movable","path","singleGroundImage","parseInt","ObjectView","_super","type","animSpeed","_this","onContainerAnimComplete_delayed_binded","onContainerAnimComplete_delayed","bind","onContainerAnimComplete_binded","onContainerAnimComplete","_engine","info","isMovableTo","isInteractive","interactive","interactiveChildren","isFloorObject","noTransparency","xAnchor","_textures","_interactionOffsets","currentInteractionOffset","idle","_container","AnimatedSprite","anchor","addChild","gotoAndStop","defineProperty","get","animationSpeed","set","changeVisualToDirection","direction","moving","stopOnFirstFrame","noLoop","onAnimComplete","changeVisual","dir","getStationaryDirVisualId","currentDirection","vId","loop","onContainerAnimCompleteCallback","onComplete","gotoAndPlay","objectUpdateCallback","setTimeout","destroy","Container","TileView","_isHighlighted","onHighlightTweenEnd_binded","onHighlightTweenEnd","halfHeight","tileHalfHeight","halfWidth","tileHalfWidth","_tileGraphics","tileHighlightImage","_highlightedOverlay","Sprite","Graphics","clear","lineStyle","tileHighlightStrokeAlpha","tileHighlightStrokeColor","beginFill","tileHighlightFillColor","tileHighlightFillAlpha","moveTo","lineTo","endFill","scale","visible","setHighlighted","isHighlighted","instant","ts","moveEngine","addTween","killTweensOf","linearTween","easeInQuad","easeOutQuad","easeInOutQuad","MoveEngine","defaultSpeed","_activeForMovables","_activeForTweens","_processFrame","_movables","_tweenTargets","_fps","_defaultSpeed","_processFunc","run","_ticker","Ticker","add","start","o","duration","vars","delay","easing","overwrite","e","prop","target","Number","easingFunc","totalFrames","currentFrame","indexOf","tweens","removeTween","targetRemoved","idx","idx2","splice","removeAllTweens","len","addMovable","removeMovable","speedUnit","removeAllMovables","addNewPathToObject","speed","currentPath","currentTarget","currentPathStep","speedMagnitude","prepareForMove","setMoveParameters","pos","px","getTilePosXFor","r","py","getTilePosYFor","position","currentReachThresh","ceil","prevPosition","onObjMoveStepEnd","checkForTileChange","checkForFollowCharacter","tt","stop","GridNode","weight","mapPos","toString","getCost","fromNeighbor","isWall","BinaryHeap","scoreFunction","content","push","element","sinkDown","pop","result","end","bubbleUp","size","rescoreElement","node","parentN","parent_1","elemScore","conditionMet","child2N","child1N","swap","child1Score","child1","child2","PathFinding","mapSizeC","mapSizeR","options","nodes","diagonal","heuristic","HEURISTICS","manhattan","closest","grid","init","dirtyNodes","cleanNode","markDirty","neighbors","ret","rowDebug","row","l","graphString","join","solve","originC","originR","destC","destR","search","getAdjacentOpenCells","cellC","cellR","sizeC","sizeR","cellArray","concat","pathTo","curr","parent","getHeap","openHeap","closestNode","h","currentNode","closed","il","neighbor","gScore","g","beenVisited","visited","isCellFilled","setCell","staticWeight","setDynamicCell","pos0","pos1","abs","D2","d1","d2","min","EngineView","config","_posFrame","w","_dragging","onMouseUp_binded","onMouseUp","onMouseDown_binded","onMouseDown","onMouseMove_binded","onMouseMove","_config","followCharacter","changeTransparencies","highlightPath","highlightTargetTile","tileHighlightAnimated","dontAutoMoveToTile","checkPathOnEachTile","mapDraggable","isoAngle","DEFAULT_ISO_ANGLE","tileHeight","DEFAULT_TILE_H","setZoomParameters","minScale","maxScale","numberOfZoomLevels","initialZoomLevel","instantCameraZoom","tan","PI","loadAssetsAndData","mapDataPath","split","loader","Loader","assetsToLoad","load","assetsAndDataLoaded","arr","resources","data","initialControllableLocation","columnIndex","rowIndex","obj","objId","visual","interactionOffsets","oTextures","rows","groundMap","groundMapData","replace","objectsMap","objectsMapData","visuals","id","ipor","ipoc","frames","extension","numberOfFrames","startIndex","floor","onAllAssetsLoaded","_currentScale","_currentZoom","initialPositionFrame","_externalCenter","createMap","repositionContent","enableInteraction","engineInstanceReadyCallback","backgroundColor","_bg","useMask","_mapMask","_mapContainer","_groundContainer","_objContainer","groundImageSprite","tile","_mapSizeR","_mapSizeC","_tileArray","_objArray","_pathFinding","pathFindingType","pathFindingClosest","floorObjectFound","addObjRefToLocation","_currentControllable","a","k","_mapVertices","_mapVisualWidthReal","_mapVisualHeightReal","width","height","zoomTo","centralizeToLocation","centralizeToCurrentExternalCenter","showHideObjectLayer","show","showHideGroundLayer","getTileAtRowAndColumn","getObjectsAtRowAndColumn","getObjectsAtLocation","createAndAddObjectToLocation","addObjectToLocation","arrangeDepthsFromLocation","addCustomObjectToLocation","displayObject","removeObjectFromLocation","removeChild","removeObjRefFromLocation","focusMapToObject","focusMapToLocation","zoomAmount","instantCameraRelocation","centralizeToObject","instantRelocate","_currentFocusLocation","_mapVisualWidthScaled","centralizeToPoint","centralizeToCurrentFocusLocation","minZoom","maxZoom","zoomIncrement","setScale","instantZoom","round","diff","oldScale","ratio","zoomOut","zoomIn","getCurrentControllable","setCurrentControllable","addObjRefToSingleLocation","removeObjRefFromSingleLocation","index","changeObjAlphasInLocation","alpha","arrangeObjLocation","arrangeObjTransparencies","prevPos","arrangePathHighlight","newPath","pathItem","stopObject","currentTargetTile","moveObjThrough","instantObjectRelocation","onObjMoveStepBegin","r1","c1","r2","c2","checkAndMoveObjectToLocation","pathEnded","objectReachedDestinationCallback","otherObjectsOnTheNextTileCallback","getPath","to","checkAndMoveObjectToTile","moveCurrentControllableToLocation","moveCurrentControllableToObj","targetPos","minPath","tempFlagHolder","minLength","getTileFromLocalPos","lp","closestTile","thresh","dist","closestDist","checkForTileClick","interactionData","toLocal","global","objectSelectCallback","tileSelectCallback","on","disableInteraction","off","isInteractionInMask","event","globalPos","_dragInitStartingX","_dragPrevStartingX","_dragInitStartingY","_dragPrevStartingY","distX","distY","posFrame","drawRect","mask","item","saidHello","VERSION","isReady","globalConfig","navigator","userAgent","toLowerCase","args","_a","sayHello","v1","v2","instanceConfig"],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index dcb4cf8..e9a3807 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,957 +1,1509 @@ { "name": "traviso.js", "version": "0.1.5", - "lockfileVersion": 1, + "lockfileVersion": 3, "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "packages": { + "": { + "name": "traviso.js", + "version": "0.1.5", + "license": "MIT", + "devDependencies": { + "@babel/core": "^7.14.2", + "@babel/preset-env": "^7.14.2", + "@rollup/plugin-babel": "^5.3.0", + "@rollup/plugin-commonjs": "^19.0.0", + "@rollup/plugin-node-resolve": "^13.0.0", + "@types/chai": "^4.2.18", + "@types/mocha": "^8.2.2", + "chai": "^4.3.4", + "cpy-cli": "^4.2.0", + "mocha": "^10.2.0", + "npm-run-all": "^4.1.5", + "pixi.js": "^6.0.4", + "pkg-ok": "^3.0.0", + "prettier": "^2.3.0", + "rimraf": "^3.0.2", + "rollup": "^2.47.0", + "rollup-plugin-jscc": "^2.0.0", + "rollup-plugin-peer-deps-external": "^2.2.4", + "rollup-plugin-terser": "^7.0.2", + "rollup-plugin-typescript2": "^0.34.1", + "ts-node": "^9.1.1", + "typedoc": "^0.23.25", + "typescript": "^4.2.4" + }, + "peerDependencies": { + "pixi.js": "^6.0.4" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", "dev": true, - "requires": { - "@babel/highlight": "^7.12.13" + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" } }, - "@babel/compat-data": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.0.tgz", - "integrity": "sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q==", - "dev": true + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } }, - "@babel/core": { - "version": "7.14.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.3.tgz", - "integrity": "sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.14.3", - "@babel/helper-compilation-targets": "^7.13.16", - "@babel/helper-module-transforms": "^7.14.2", - "@babel/helpers": "^7.14.0", - "@babel/parser": "^7.14.3", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.2", - "@babel/types": "^7.14.2", + "node_modules/@babel/compat-data": { + "version": "7.20.14", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.14.tgz", + "integrity": "sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", + "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helpers": "^7.20.7", + "@babel/parser": "^7.20.7", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.12", + "@babel/types": "^7.20.7", "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" + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "@babel/generator": { - "version": "7.14.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.3.tgz", - "integrity": "sha512-bn0S6flG/j0xtQdz3hsjJ624h3W0r3llttBMfyHX3YrZ/KtLYr15bjA0FXkgW7FpvrDuTuElXeVjiKlYRpnOFA==", + "node_modules/@babel/generator": { + "version": "7.20.14", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz", + "integrity": "sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==", "dev": true, - "requires": { - "@babel/types": "^7.14.2", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "dependencies": { + "@babel/types": "^7.20.7", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", "dev": true, - "requires": { - "@babel/types": "^7.12.13" + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" } }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-compilation-targets": { - "version": "7.13.16", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz", - "integrity": "sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA==", + "node_modules/@babel/helper-compilation-targets": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", "dev": true, - "requires": { - "@babel/compat-data": "^7.13.15", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@babel/helper-create-class-features-plugin": { - "version": "7.14.3", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.3.tgz", - "integrity": "sha512-BnEfi5+6J2Lte9LeiL6TxLWdIlEv9Woacc1qXzXBgbikcOzMRM2Oya5XGg/f/ngotv1ej2A/b+3iJH8wbS1+lQ==", + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz", + "integrity": "sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.14.2", - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.14.3", - "@babel/helper-split-export-declaration": "^7.12.13" + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.20.7", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/helper-split-export-declaration": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.14.3", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.3.tgz", - "integrity": "sha512-JIB2+XJrb7v3zceV2XzDhGIB902CmKGSpSl4q2C6agU9SNLG/2V1RtFRGPG1Ajh9STj3+q6zJMOC+N/pp2P9DA==", + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", + "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "regexpu-core": "^4.7.1" + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.2.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@babel/helper-define-polyfill-provider": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.0.tgz", - "integrity": "sha512-JT8tHuFjKBo8NnaUbblz7mIu1nnvUDiHVjXXkulZULyidvo/7P6TY7+YqpV37IfF+KUFxmlK04elKtGKXaiVgw==", - "dev": true, - "requires": { - "@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", + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", "resolve": "^1.14.2", "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" } }, - "@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", "dev": true, - "requires": { - "@babel/types": "^7.13.0" + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-function-name": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz", - "integrity": "sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ==", + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.14.2" + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "node_modules/@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "dev": true, - "requires": { - "@babel/types": "^7.12.13" + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-hoist-variables": { - "version": "7.13.16", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.16.tgz", - "integrity": "sha512-1eMtTrXtrwscjcAeO4BVK+vvkxaLJSPFz1w1KLawz6HLNi9bPFGBNwwDyVfiu1Tv/vRRFYfoGaKhmAQPGPn5Wg==", + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", "dev": true, - "requires": { - "@babel/traverse": "^7.13.15", - "@babel/types": "^7.13.16" + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz", + "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==", "dev": true, - "requires": { - "@babel/types": "^7.13.12" + "dependencies": { + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dev": true, - "requires": { - "@babel/types": "^7.13.12" + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-module-transforms": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.2.tgz", - "integrity": "sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA==", + "node_modules/@babel/helper-module-transforms": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.14.0", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.2", - "@babel/types": "^7.14.2" + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.10", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", "dev": true, - "requires": { - "@babel/types": "^7.12.13" + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", - "dev": true + "node_modules/@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, - "@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@babel/helper-replace-supers": { - "version": "7.14.3", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.3.tgz", - "integrity": "sha512-Rlh8qEWZSTfdz+tgNV/N4gz1a0TMNwCUcENhMjHTHKp3LseYH5Jha0NSlyTQWMnjbYcwFt+bqAMqSLHVXkQ6UA==", + "node_modules/@babel/helper-replace-supers": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", + "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.14.2", - "@babel/types": "^7.14.2" + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.20.7", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "node_modules/@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", "dev": true, - "requires": { - "@babel/types": "^7.13.12" + "dependencies": { + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", "dev": true, - "requires": { - "@babel/types": "^7.12.1" + "dependencies": { + "@babel/types": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "dev": true, - "requires": { - "@babel/types": "^7.12.13" + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-validator-identifier": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", - "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", - "dev": true + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, - "@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", - "dev": true + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, - "@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "node_modules/@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", "dev": true, - "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helpers": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz", - "integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==", + "node_modules/@babel/helpers": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz", + "integrity": "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==", "dev": true, - "requires": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.14.0" + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.13", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/highlight": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", - "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.0", + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/parser": { - "version": "7.14.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.3.tgz", - "integrity": "sha512-7MpZDIfI7sUC5zWo2+foJ50CSI5lcqDehZ0lVgIhSi4bFEk94fLAKlF3Q0nzSQQ+ca0lm+O6G9ztKVBeu8PMRQ==", - "dev": true + "node_modules/@babel/parser": { + "version": "7.20.15", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz", + "integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==", + "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.18.6", + "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.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", + "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" } }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.2.tgz", - "integrity": "sha512-b1AM4F6fwck4N8ItZ/AtC4FP/cqZqmKRQ4FaTDutwSYyjuhtvsGEMLK4N/ztV/ImP40BjIDyMgBQAeAMsQYVFQ==", + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9", "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.14.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.14.3.tgz", - "integrity": "sha512-HEjzp5q+lWSjAgJtSluFDrGGosmwTgKwCXdDQZvhKsRlwv3YdkUEqxNrrjesJd+B9E9zvr1PVPVBvhYZ9msjvQ==", + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz", + "integrity": "sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==", "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.14.3", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-class-static-block": "^7.12.13" + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" } }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.2.tgz", - "integrity": "sha512-oxVQZIWFh91vuNEMKltqNsKLFWkOIyJc95k2Gv9lWVyDfPUQGSSlbDEgWuJUU1afGE9WwlzpucMZ3yDRHIItkA==", + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.2.tgz", - "integrity": "sha512-sRxW3z3Zp3pFfLAgVEvzTFutTXax837oOatUIvSG9o5gRj9mKwm3br1Se5f4QalTQs9x4AzlA/HrCWbQIHASUQ==", + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-json-strings": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.2.tgz", - "integrity": "sha512-w2DtsfXBBJddJacXMBhElGEYqCZQqN99Se1qeYn8DVLB33owlrlLftIbMzn5nz1OITfDVknXF433tBrLEAOEjA==", + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.2.tgz", - "integrity": "sha512-1JAZtUrqYyGsS7IDmFeaem+/LJqujfLZ2weLR9ugB0ufUPjzf8cguyVT1g5im7f7RXxuLq1xUxEzvm68uYRtGg==", + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.2.tgz", - "integrity": "sha512-ebR0zU9OvI2N4qiAC38KIAK75KItpIPTpAtd2r4OZmMFeKbKJpUFLYP2EuDut82+BmYi8sz42B+TfTptJ9iG5Q==", + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.2.tgz", - "integrity": "sha512-DcTQY9syxu9BpU3Uo94fjCB3LN9/hgPS8oUL7KrSW3bA2ePrKZZPJcc5y0hoJAM9dft3pGfErtEUvxXQcfLxUg==", + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.2.tgz", - "integrity": "sha512-hBIQFxwZi8GIp934+nj5uV31mqclC1aYDhctDu5khTi9PCCUOczyy0b34W0oE9U/eJXiqQaKyVsmjeagOaSlbw==", + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", "dev": true, - "requires": { - "@babel/compat-data": "^7.14.0", - "@babel/helper-compilation-targets": "^7.13.16", - "@babel/helper-plugin-utils": "^7.13.0", + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.14.2" + "@babel/plugin-transform-parameters": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.2.tgz", - "integrity": "sha512-XtkJsmJtBaUbOxZsNk0Fvrv8eiqgneug0A6aqLFZ4TSkar2L5dSXWcnUKHgmjJt49pyB/6ZHvkr3dPgl9MOWRQ==", + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.2.tgz", - "integrity": "sha512-qQByMRPwMZJainfig10BoaDldx/+VDtNcrA7qdNaEOAj6VXud+gfrkA8j4CRAU5HjnWREXqIpSpH30qZX1xivA==", + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz", + "integrity": "sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.0.tgz", - "integrity": "sha512-59ANdmEwwRUkLjB7CRtwJxxwtjESw+X2IePItA+RGQh+oy5RmpCh/EvVVvh5XQc3yxsm5gtv0+i9oBZhaDNVTg==", + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", + "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-create-class-features-plugin": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-private-property-in-object": "^7.14.0" + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-async-generators": { + "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, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-class-properties": { + "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, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.12.13.tgz", - "integrity": "sha512-ZmKQ0ZXR0nYpHZIIuj9zE7oIqCx2hw9TKi+lIo73NNrMPAZGHfS92/VRV0ZmPj6H2ffBgyFHXvJ5NYsNeEaP2A==", + "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, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-dynamic-import": { + "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, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-export-namespace-from": { + "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, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-json-strings": { + "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, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-logical-assignment-operators": { + "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, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-nullish-coalescing-operator": { + "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, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-numeric-separator": { + "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, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-object-rest-spread": { + "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, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-optional-catch-binding": { + "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, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-optional-chaining": { + "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, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.0.tgz", - "integrity": "sha512-bda3xF8wGl5/5btF794utNOL0Jw+9jE5C1sLZcoK7c4uonE/y3iQiyG+KbkF3WBV/paX58VCpjhxLPkdj5Fe4w==", + "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, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "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, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz", + "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz", + "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==", "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-block-scoping": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.2.tgz", - "integrity": "sha512-neZZcP19NugZZqNwMTH+KoBjx5WyvESPSIOQb4JHpfd+zPfqcH65RMu5xJju5+6q/Y2VzYrleQTr+b6METyyxg==", + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.20.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.15.tgz", + "integrity": "sha512-Vv4DMZ6MiNOhu/LdaZsT/bsLRxgL94d269Mv4R/9sp6+Mp++X/JqypZYypJXLlM4mlL352/Egzbzr98iABH1CA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-classes": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.2.tgz", - "integrity": "sha512-7oafAVcucHquA/VZCsXv/gmuiHeYd64UJyyTYU+MPfNu0KeNlxw06IeENBO8bJjXVbolu+j1MM5aKQtH1OMCNg==", + "node_modules/@babel/plugin-transform-classes": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz", + "integrity": "sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.14.2", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz", + "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/template": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-destructuring": { - "version": "7.13.17", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz", - "integrity": "sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA==", + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz", + "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", "dev": true, - "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "node_modules/@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-modules-amd": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.2.tgz", - "integrity": "sha512-hPC6XBswt8P3G2D1tSV2HzdKvkqOpmbyoy+g73JG0qlF/qx2y3KaMmXb1fLrpmWGLZYA0ojCvaHdzFWjlmV+Pw==", + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", + "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.14.2", - "@babel/helper-plugin-utils": "^7.13.0", - "babel-plugin-dynamic-import-node": "^2.3.3" + "dependencies": { + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz", - "integrity": "sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ==", + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz", + "integrity": "sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==", "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.13.12", - "babel-plugin-dynamic-import-node": "^2.3.3" + "dependencies": { + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-simple-access": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", + "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", - "babel-plugin-dynamic-import-node": "^2.3.3" + "dependencies": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-identifier": "^7.19.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-modules-umd": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz", - "integrity": "sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw==", + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.14.0", - "@babel/helper-plugin-utils": "^7.13.0" + "dependencies": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-parameters": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.2.tgz", - "integrity": "sha512-NxoVmA3APNCC1JdMXkdYXuQS+EMdqy0vIwyDHeKHiJKRxmp1qGSdb0JLEIoPRhkx6H/8Qi3RJ3uqOCYw8giy9A==", + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", + "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-regenerator": { - "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz", - "integrity": "sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ==", + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", "dev": true, - "requires": { - "regenerator-transform": "^0.14.2" + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "regenerator-transform": "^0.15.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "node_modules/@babel/plugin-transform-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", + "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/preset-env": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.2.tgz", - "integrity": "sha512-7dD7lVT8GMrE73v4lvDEb85cgcQhdES91BSD7jS/xjC6QY8PnRhux35ac+GCpbiRhp8crexBvZZqnaL6VrY8TQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.14.0", - "@babel/helper-compilation-targets": "^7.13.16", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.14.2", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-class-static-block": "^7.13.11", - "@babel/plugin-proposal-dynamic-import": "^7.14.2", - "@babel/plugin-proposal-export-namespace-from": "^7.14.2", - "@babel/plugin-proposal-json-strings": "^7.14.2", - "@babel/plugin-proposal-logical-assignment-operators": "^7.14.2", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.2", - "@babel/plugin-proposal-numeric-separator": "^7.14.2", - "@babel/plugin-proposal-object-rest-spread": "^7.14.2", - "@babel/plugin-proposal-optional-catch-binding": "^7.14.2", - "@babel/plugin-proposal-optional-chaining": "^7.14.2", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-private-property-in-object": "^7.14.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "node_modules/@babel/preset-env": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", + "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.20.1", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.20.2", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^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-import-assertions": "^7.20.0", "@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", @@ -959,558 +1511,708 @@ "@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.0", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.14.2", - "@babel/plugin-transform-classes": "^7.14.2", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.17", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.14.2", - "@babel/plugin-transform-modules-commonjs": "^7.14.0", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.14.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.14.2", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.13.15", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.14.2", - "babel-plugin-polyfill-corejs2": "^0.2.0", - "babel-plugin-polyfill-corejs3": "^0.2.0", - "babel-plugin-polyfill-regenerator": "^0.2.0", - "core-js-compat": "^3.9.0", + "@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.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.20.2", + "@babel/plugin-transform-classes": "^7.20.2", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.20.2", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.19.6", + "@babel/plugin-transform-modules-commonjs": "^7.19.6", + "@babel/plugin-transform-modules-systemjs": "^7.19.6", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.20.1", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.19.0", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.20.2", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "core-js-compat": "^3.25.1", "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@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==", + "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, - "requires": { + "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" } }, - "@babel/runtime": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", - "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "node_modules/@babel/runtime": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", + "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "@babel/traverse": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.2.tgz", - "integrity": "sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.14.2", - "@babel/helper-function-name": "^7.14.2", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.14.2", - "@babel/types": "^7.14.2", + "node_modules/@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", + "integrity": "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.13", + "@babel/types": "^7.20.7", "debug": "^4.1.0", "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/types": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.2.tgz", - "integrity": "sha512-SdjAG/3DikRHpUOjxZgnkbR11xUlyDMUFJdvnIgZEE16mqmY0BINMmc4//JMJglEmn6i7sq6p+mGrFWyZ98EEw==", + "node_modules/@babel/types": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.0", + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" } }, - "@jsbits/escape-regex-str": { + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@jsbits/escape-regex-str": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@jsbits/escape-regex-str/-/escape-regex-str-1.0.3.tgz", "integrity": "sha512-0800vYI2fg1nuUq/T9Tqv8DMOLLNiRAltxFbKIbR7szrvW6qTuI2+zGK51hV7NAAmUr4G83Kvpj2R6Yyg07iIw==", - "dev": true + "dev": true, + "engines": { + "node": ">=4.2" + } }, - "@jsbits/get-package-version": { + "node_modules/@jsbits/get-package-version": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@jsbits/get-package-version/-/get-package-version-1.0.3.tgz", "integrity": "sha512-IJy1jRL01x7p6UEpgKa1lVLstMUx8EiIR8pPoS5sBfsHEoeLkzYiNpAfxPx8zLDUJyS1yBbChJjcWdPqyH285w==", - "dev": true + "dev": true, + "engines": { + "node": ">=4.2" + } }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" } }, - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } }, - "@pixi/accessibility": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/accessibility/-/accessibility-6.0.4.tgz", - "integrity": "sha512-S0Co6M+BIx+Yk3INCwGp5Xif0jIv/uj5JPMbctpMV7fSsE3x0nYvcOOAfBjkGhYcXG7fNOGrYLgs5XQOBIWGtA==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, - "requires": { - "@pixi/canvas-renderer": "6.0.4", - "@pixi/core": "6.0.4", - "@pixi/display": "6.0.4", - "@pixi/utils": "6.0.4" + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" } }, - "@pixi/app": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/app/-/app-6.0.4.tgz", - "integrity": "sha512-+BiuaQtnOBR5/Q8+nXnHE2tuZyuBnqy/cwbIR1ImPnKAs7UaCcRLf1R0RvnRFu4KMP4ozTd810p0k84TzIguTA==", + "node_modules/@pixi/accessibility": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/accessibility/-/accessibility-6.5.9.tgz", + "integrity": "sha512-+cgnskv4wEmY8bNUceMLzIk6rfm+sqg+IiCW0aiL3w4KQJXV05/+aFMqufp9fFqAtb/GdGcS0HJxx9jXiqe4aw==", "dev": true, - "requires": { - "@pixi/core": "6.0.4", - "@pixi/display": "6.0.4" + "peerDependencies": { + "@pixi/core": "6.5.9", + "@pixi/display": "6.5.9", + "@pixi/utils": "6.5.9" } }, - "@pixi/canvas-renderer": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/canvas-renderer/-/canvas-renderer-6.0.4.tgz", - "integrity": "sha512-z2r1nzYsAp9+gipvlFCj0rd0yfjVq1hTQkyWuMbo5TrePdEo3NLRrCUGo1dHJNbeSERpgGNN05OAiGQbAI+AUg==", + "node_modules/@pixi/app": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/app/-/app-6.5.9.tgz", + "integrity": "sha512-RDFR8ea86eykTmxlQPb1PMdXqYaeLmf1BKprcEKOOr6vmNLykzn+UEaal4OJtmpgtAsHt6hkpW7nUeZ8idbWZA==", "dev": true, - "requires": { - "@pixi/constants": "6.0.4", - "@pixi/core": "6.0.4", - "@pixi/math": "6.0.4", - "@pixi/settings": "6.0.4", - "@pixi/utils": "6.0.4" + "peerDependencies": { + "@pixi/core": "6.5.9", + "@pixi/display": "6.5.9", + "@pixi/math": "6.5.9", + "@pixi/utils": "6.5.9" } }, - "@pixi/compressed-textures": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/compressed-textures/-/compressed-textures-6.0.4.tgz", - "integrity": "sha512-AqQPuuXcNrR28YT69SZhRxRRwzqQcQ/QrlexAR9Fohpe+jfDnvlNaIvQQoXU7HxD7huRiQ/dm3nwsLiKPqVoTg==", + "node_modules/@pixi/compressed-textures": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/compressed-textures/-/compressed-textures-6.5.9.tgz", + "integrity": "sha512-7FbgA6fVjhhoWrIHjEkTTZBZIr4FlQ7bWQzpSy3i8J0lGFTFp1p6n17i0t8xxqrJ1SWAJud8WOESsiAHWUHLDQ==", "dev": true, - "requires": { - "@pixi/constants": "6.0.4", - "@pixi/core": "6.0.4", - "@pixi/loaders": "6.0.4", - "@pixi/utils": "6.0.4" + "peerDependencies": { + "@pixi/constants": "6.5.9", + "@pixi/core": "6.5.9", + "@pixi/loaders": "6.5.9", + "@pixi/settings": "6.5.9", + "@pixi/utils": "6.5.9" } }, - "@pixi/constants": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-6.0.4.tgz", - "integrity": "sha512-khwRMfuHVdFk93L+bf0mmCwtSloYlfBfjdseIAbJL+VSpeMG1S2DzCYlMCPdp4mvDLU9LvkH2U2leZGEIx5j7g==", + "node_modules/@pixi/constants": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-6.5.9.tgz", + "integrity": "sha512-749Vv+DUh4Tguku6uouXUIAUHThYU/cDZzWW4lYNv2UrqUrPxE1a7b8Ca0GakFjt6HZIenl6DnUYLP4yE6PWiQ==", "dev": true }, - "@pixi/core": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/core/-/core-6.0.4.tgz", - "integrity": "sha512-r1ceyAz0z3usUs0uj4u2986vVT2tQixGNin2o9FNhPFDXbN5EaoKHLtrjGBt1iylK/EUH/nfL5zq0SGa/loW0A==", + "node_modules/@pixi/core": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/core/-/core-6.5.9.tgz", + "integrity": "sha512-NQGaEYtUIKNAQNeqLsfHSkx1BYuOWJzAYDpb63QEZFvV8gTRf2t3SBuyvSxvMFAGakNrqYefIXkfJXpmHOrk7A==", "dev": true, - "requires": { - "@pixi/constants": "6.0.4", - "@pixi/math": "6.0.4", - "@pixi/runner": "6.0.4", - "@pixi/settings": "6.0.4", - "@pixi/ticker": "6.0.4", - "@pixi/utils": "6.0.4" + "dependencies": { + "@types/offscreencanvas": "^2019.6.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/pixijs" + }, + "peerDependencies": { + "@pixi/constants": "6.5.9", + "@pixi/extensions": "6.5.9", + "@pixi/math": "6.5.9", + "@pixi/runner": "6.5.9", + "@pixi/settings": "6.5.9", + "@pixi/ticker": "6.5.9", + "@pixi/utils": "6.5.9" } }, - "@pixi/display": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/display/-/display-6.0.4.tgz", - "integrity": "sha512-v6hjx5Gm5aIlLQ7xrsZ2lstI1cv/MtbWXJOhU8LXckkrHHUvAuJgml3+0pcHw8YLuOlepZngUuiqy/XjceVk8A==", + "node_modules/@pixi/display": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/display/-/display-6.5.9.tgz", + "integrity": "sha512-85eODYWsOM/kIt2N/L51lsAl3DLJA+1Eed+Nl6ZeF/pEvQnXf7jDZzGwVmUKJurpPWhjkA5OnzWabFw3De2qZg==", "dev": true, - "requires": { - "@pixi/math": "6.0.4", - "@pixi/settings": "6.0.4", - "@pixi/utils": "6.0.4" + "peerDependencies": { + "@pixi/constants": "6.5.9", + "@pixi/math": "6.5.9", + "@pixi/settings": "6.5.9", + "@pixi/utils": "6.5.9" } }, - "@pixi/extract": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/extract/-/extract-6.0.4.tgz", - "integrity": "sha512-xf/pnc5od7YJ8zCVIrv1km7i+P+rxYcSrrBI/hqX+qoVsI5EySKInf2GhCKHz4UjOHdSL5aPDnNYvzssNdIpdQ==", + "node_modules/@pixi/extensions": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/extensions/-/extensions-6.5.9.tgz", + "integrity": "sha512-vwzEhLkGiiCw9e7QmXBKHuJzX1DzaA2JcFw0Kl1DTI0lH1cIZccE3rVBbuVY8+Zvb33WV5XxwQC03/qyx4DUbw==", + "dev": true + }, + "node_modules/@pixi/extract": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/extract/-/extract-6.5.9.tgz", + "integrity": "sha512-fqnGfJFC6OJ63Js+lkt2YjTCLpzMnCETB3YTpty/DUM9K/0WzqZGHbWVyNmLo4XDHlG3qqgkXW2hmZQdY9BQAw==", "dev": true, - "requires": { - "@pixi/core": "6.0.4", - "@pixi/math": "6.0.4", - "@pixi/utils": "6.0.4" + "peerDependencies": { + "@pixi/constants": "6.5.9", + "@pixi/core": "6.5.9", + "@pixi/math": "6.5.9", + "@pixi/utils": "6.5.9" } }, - "@pixi/filter-alpha": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/filter-alpha/-/filter-alpha-6.0.4.tgz", - "integrity": "sha512-MZEfvNPfH2NfrwgqKhwwzurnbLujphx4KNQmS63MEZTvXuQJy16DEOs459APYF6PmeGAGuDPKd5Onk/VbLRUwQ==", + "node_modules/@pixi/filter-alpha": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/filter-alpha/-/filter-alpha-6.5.9.tgz", + "integrity": "sha512-p87mGgMXX64CKUmTSadIOUzA7Q7MxybmsYPZbxFIFWsH2ML07RZChEaZWL2Bzql2CwgfejzxJPkCTXB/Qn5IRQ==", "dev": true, - "requires": { - "@pixi/core": "6.0.4" + "peerDependencies": { + "@pixi/core": "6.5.9" } }, - "@pixi/filter-blur": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/filter-blur/-/filter-blur-6.0.4.tgz", - "integrity": "sha512-Hb14geh8ZKc8jZ4lfKyeWThLMqIvha6DdRUTfiSdKe3L7Q6qwqsb7LPtIrZHAPEQCyFLWbcOvRMy6ZFy0YkpLA==", + "node_modules/@pixi/filter-blur": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/filter-blur/-/filter-blur-6.5.9.tgz", + "integrity": "sha512-nqfvCktus4mlhNqILJKYnyslIJgnZ6oPl261B70OvOT7GPohPFUg/y6wdxa38xSqkGCUwjFJ+VgVdmGyFsoRsQ==", "dev": true, - "requires": { - "@pixi/core": "6.0.4", - "@pixi/settings": "6.0.4" + "peerDependencies": { + "@pixi/constants": "6.5.9", + "@pixi/core": "6.5.9", + "@pixi/settings": "6.5.9" } }, - "@pixi/filter-color-matrix": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/filter-color-matrix/-/filter-color-matrix-6.0.4.tgz", - "integrity": "sha512-31Rf9VBo2gqoxiAbD/Z1i+mu1C7uehecoelYQqCIzLjsWisICDTZZjUkMB5GrGzjeSpSqLfB34tlutBSh/r1wg==", + "node_modules/@pixi/filter-color-matrix": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/filter-color-matrix/-/filter-color-matrix-6.5.9.tgz", + "integrity": "sha512-ycx1SO3USLLbGHkqwo+3RwtvxnlffKinFuKQR59LrhuvULhrwLD9GVdB6e7wKgx7CrMtJe5kcED9ZTitLL7QbA==", "dev": true, - "requires": { - "@pixi/core": "6.0.4" + "peerDependencies": { + "@pixi/core": "6.5.9" } }, - "@pixi/filter-displacement": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/filter-displacement/-/filter-displacement-6.0.4.tgz", - "integrity": "sha512-Oyk/WbzxlN46d/uB5NtPLfEW2G6ob5XRP+mPVd8yhK38m9Y9rKlcH4jJoWB2niQ+ewkdRfZhuIB+JRdhc9eevg==", + "node_modules/@pixi/filter-displacement": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/filter-displacement/-/filter-displacement-6.5.9.tgz", + "integrity": "sha512-Z8JRUTtOpxNkzacQfedkOVEzIJOSm3gOYB/Vp3Et/S2BTS2ifZ6NoYcsYFY7Cm6ZF+ht/bP3X+DYpkk75px6oA==", "dev": true, - "requires": { - "@pixi/core": "6.0.4", - "@pixi/math": "6.0.4" + "peerDependencies": { + "@pixi/core": "6.5.9", + "@pixi/math": "6.5.9" } }, - "@pixi/filter-fxaa": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/filter-fxaa/-/filter-fxaa-6.0.4.tgz", - "integrity": "sha512-cO5XuEIq//Wsk4MjrCYuXff+1/Gfc4bkFkMTO5JKvUaDlZzHNykZd5CeAouD2fz7/6/1z0gdWKbBY9IoameBew==", + "node_modules/@pixi/filter-fxaa": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/filter-fxaa/-/filter-fxaa-6.5.9.tgz", + "integrity": "sha512-bWESjdxHtg5+3j+9SRrwSWDHeLULryBVcbebPg8f7tSpja3niYkJa32TklY+yrb9Lz2x6iI5wfJ4QmbeYZW9Lw==", "dev": true, - "requires": { - "@pixi/core": "6.0.4" + "peerDependencies": { + "@pixi/core": "6.5.9" } }, - "@pixi/filter-noise": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/filter-noise/-/filter-noise-6.0.4.tgz", - "integrity": "sha512-Fpex0tpKCwZIsN03zAmN7hAOCocFF/w4XVVIkuNgYR5A90OkK+omR6p/fDtlJtlAjWarsWq0y+c5wvvUMfqsmg==", + "node_modules/@pixi/filter-noise": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/filter-noise/-/filter-noise-6.5.9.tgz", + "integrity": "sha512-O4lXS8kHmwPB3n/yfPxVfr18y9mdjPjNsf9uQMmHa1W3EAzjILcLQa1hFZP+ek6XroMcG6+sv10lFd9PlNiRVg==", "dev": true, - "requires": { - "@pixi/core": "6.0.4" + "peerDependencies": { + "@pixi/core": "6.5.9" } }, - "@pixi/graphics": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/graphics/-/graphics-6.0.4.tgz", - "integrity": "sha512-CybR+DBkGB5llypPeib2A0J13mnPQwlQDqLRhlhXKkYxXQKXlPk5MWA7ZEg+4wKeqUUlrC+k70e5ZFYLC3AgEQ==", + "node_modules/@pixi/graphics": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/graphics/-/graphics-6.5.9.tgz", + "integrity": "sha512-+b7Ke6MkngftcRq2WweqsEWtV4ttRRurCiiPYeOhM5kGuAwDoyWGhXnWltiBQUHAE026uEep8wFi3vmlAzlXTQ==", "dev": true, - "requires": { - "@pixi/constants": "6.0.4", - "@pixi/core": "6.0.4", - "@pixi/display": "6.0.4", - "@pixi/math": "6.0.4", - "@pixi/sprite": "6.0.4", - "@pixi/utils": "6.0.4" + "peerDependencies": { + "@pixi/constants": "6.5.9", + "@pixi/core": "6.5.9", + "@pixi/display": "6.5.9", + "@pixi/math": "6.5.9", + "@pixi/sprite": "6.5.9", + "@pixi/utils": "6.5.9" } }, - "@pixi/interaction": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/interaction/-/interaction-6.0.4.tgz", - "integrity": "sha512-4+FOKDpiF/+F9r3+y81xTBElcLqI3OpeeI9bkIw9pPHA41riXRQv+m0HWz76bGQK7zDAimAV9K2xff7Wa5nSeg==", + "node_modules/@pixi/interaction": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/interaction/-/interaction-6.5.9.tgz", + "integrity": "sha512-PXWPPpOBwZdf/VtrstYaKqtUfJcJR57oRGdSXZ0mtvN8jEhsWUe0GlmlHEp6PxTwtn5ECKDy8+i9V0CcqLKgug==", "dev": true, - "requires": { - "@pixi/core": "6.0.4", - "@pixi/display": "6.0.4", - "@pixi/math": "6.0.4", - "@pixi/ticker": "6.0.4", - "@pixi/utils": "6.0.4" + "peerDependencies": { + "@pixi/core": "6.5.9", + "@pixi/display": "6.5.9", + "@pixi/math": "6.5.9", + "@pixi/ticker": "6.5.9", + "@pixi/utils": "6.5.9" } }, - "@pixi/loaders": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/loaders/-/loaders-6.0.4.tgz", - "integrity": "sha512-cw8QSkn8l8P06fINfwCZW+vUdhtOJ5G+T2qQm3HIDgI/J1tAsiRj3ufHop8xkHwYXrUeTf1LTqw+QdlZEVpJfg==", + "node_modules/@pixi/loaders": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/loaders/-/loaders-6.5.9.tgz", + "integrity": "sha512-wHza2gnDEkfz1xmlLrsrxBzkEIWOufS4DFR/i1gl9lyzDJs5be1UB6zLbp8r7gxAYhNXHTbqU+CODYaJq/1TAQ==", "dev": true, - "requires": { - "@pixi/constants": "6.0.4", - "@pixi/core": "6.0.4", - "@pixi/utils": "6.0.4", - "resource-loader": "^3.0.1" + "peerDependencies": { + "@pixi/constants": "6.5.9", + "@pixi/core": "6.5.9", + "@pixi/utils": "6.5.9" } }, - "@pixi/math": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/math/-/math-6.0.4.tgz", - "integrity": "sha512-UwZ72CeZ2KsS4IlcEXgNiuD88omPk42Dct74+1G+R2+yPI+XRZq+hGQRTle/BbFYjxh9ccdQVyX9ToGv1XTd6Q==", + "node_modules/@pixi/math": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/math/-/math-6.5.9.tgz", + "integrity": "sha512-L6EARDZiMXXqyqrgvc4lTVpMppRhkeJcCCg+6XAilp73ZAehmcCKt1fuCENbscpJgdX8EDBDWlGVrDOq6Yfa3Q==", "dev": true }, - "@pixi/mesh": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/mesh/-/mesh-6.0.4.tgz", - "integrity": "sha512-uE1Qs4mXy0QVV3yjxlNeqthkXGS6Hkt5uR1fwrvdqxlQRkX69nRq+GZfInuRYDWqwAsl8eZWs7f+pLRDT+HFbA==", + "node_modules/@pixi/mesh": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/mesh/-/mesh-6.5.9.tgz", + "integrity": "sha512-UC6LtyNBrOPWOHQsJSSKuWwc6lRYzOHm13ehbv+x7174j5frsIDndiPkeB55oEIk3osAQO5nL/7QgCI58IaiwA==", "dev": true, - "requires": { - "@pixi/constants": "6.0.4", - "@pixi/core": "6.0.4", - "@pixi/display": "6.0.4", - "@pixi/math": "6.0.4", - "@pixi/settings": "6.0.4", - "@pixi/utils": "6.0.4" + "peerDependencies": { + "@pixi/constants": "6.5.9", + "@pixi/core": "6.5.9", + "@pixi/display": "6.5.9", + "@pixi/math": "6.5.9", + "@pixi/settings": "6.5.9", + "@pixi/utils": "6.5.9" } }, - "@pixi/mesh-extras": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/mesh-extras/-/mesh-extras-6.0.4.tgz", - "integrity": "sha512-2fGM8j2NBwPV71SSmMfke1N1oEQ34+J19rdaAb+p1fXex0FafqtXVO49Q8rPMvungKDplMKElzQoaC1G6JGKqA==", + "node_modules/@pixi/mesh-extras": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/mesh-extras/-/mesh-extras-6.5.9.tgz", + "integrity": "sha512-l2wz+ZchFAV2ceKG247ZZjYq8G6gqiGj3Oicj5N/cqdHvMXU+jTclO/jBqA98GH4poww2Y3TjTUFiYh4LmTXMQ==", "dev": true, - "requires": { - "@pixi/constants": "6.0.4", - "@pixi/core": "6.0.4", - "@pixi/math": "6.0.4", - "@pixi/mesh": "6.0.4", - "@pixi/utils": "6.0.4" + "peerDependencies": { + "@pixi/constants": "6.5.9", + "@pixi/core": "6.5.9", + "@pixi/math": "6.5.9", + "@pixi/mesh": "6.5.9", + "@pixi/utils": "6.5.9" } }, - "@pixi/mixin-cache-as-bitmap": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/mixin-cache-as-bitmap/-/mixin-cache-as-bitmap-6.0.4.tgz", - "integrity": "sha512-b1G5AWsxnw3CxNyaxCWJ1cWPnRECknJQ9B4D8Dy7u/gI2gABVjqz17nNFYnVpcggLlgMTkjX8+/HWnD/vZQkTg==", + "node_modules/@pixi/mixin-cache-as-bitmap": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/mixin-cache-as-bitmap/-/mixin-cache-as-bitmap-6.5.9.tgz", + "integrity": "sha512-nhBRLp5f4bxnf/q+3DrVWD4MNWn8kymi6V7AFr+ItDROnCurAg96fefOZlUcxOs9hXWKM6QXkR9XQSHeXKNq+Q==", "dev": true, - "requires": { - "@pixi/canvas-renderer": "6.0.4", - "@pixi/core": "6.0.4", - "@pixi/display": "6.0.4", - "@pixi/math": "6.0.4", - "@pixi/settings": "6.0.4", - "@pixi/sprite": "6.0.4", - "@pixi/utils": "6.0.4" + "peerDependencies": { + "@pixi/constants": "6.5.9", + "@pixi/core": "6.5.9", + "@pixi/display": "6.5.9", + "@pixi/math": "6.5.9", + "@pixi/settings": "6.5.9", + "@pixi/sprite": "6.5.9", + "@pixi/utils": "6.5.9" } }, - "@pixi/mixin-get-child-by-name": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/mixin-get-child-by-name/-/mixin-get-child-by-name-6.0.4.tgz", - "integrity": "sha512-scUMBHlOmW0hpjltn4UCihJZvz3ysDYIW35ma9p9Lso2D9qKjsZpojQ6mc75FVWz53T0BjUmLW8LHA86Jic6MQ==", + "node_modules/@pixi/mixin-get-child-by-name": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/mixin-get-child-by-name/-/mixin-get-child-by-name-6.5.9.tgz", + "integrity": "sha512-Co1exHIPACW3dURze2KKDi7TnBa7CwyhI1SuEflynopN2CkMEhJ9VQJDCvd5FNzkhmc14lIdIEqtN19w9EEOYw==", "dev": true, - "requires": { - "@pixi/display": "6.0.4" + "peerDependencies": { + "@pixi/display": "6.5.9" } }, - "@pixi/mixin-get-global-position": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/mixin-get-global-position/-/mixin-get-global-position-6.0.4.tgz", - "integrity": "sha512-HzaFTMZEZTr6+WYuT9crTjjBYl7/Y/VDB7pWmjnntEdQsa1m0+by7Mnl67L6OSUPsAgW3MMlWirb5tL2zGFC7g==", + "node_modules/@pixi/mixin-get-global-position": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/mixin-get-global-position/-/mixin-get-global-position-6.5.9.tgz", + "integrity": "sha512-lwwbI4qVwlrknZjE8cVdgqsiIHdDyV4MdCL2wO7+zw5aW4EofPlyRb2av7za5onPagaFL/Jgj4WkUlZta40WaQ==", "dev": true, - "requires": { - "@pixi/display": "6.0.4", - "@pixi/math": "6.0.4" + "peerDependencies": { + "@pixi/display": "6.5.9", + "@pixi/math": "6.5.9" } }, - "@pixi/particles": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/particles/-/particles-6.0.4.tgz", - "integrity": "sha512-/57nd+icuPFMNc+SxeUqGoO8ZXEKu9u8h+UI856XF1Rc1jlXzGanGAbp43Llq2LphYqBI8YVftP0QXhewCVjjA==", + "node_modules/@pixi/particle-container": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/particle-container/-/particle-container-6.5.9.tgz", + "integrity": "sha512-1JtFA3cYMsnt+nyR/jIoFdpsk6nAcEemZlnNIqTYpD/E92WN6iIIwQRxAfin18P4iTzptEkjC/mCRTDfkGYtSw==", "dev": true, - "requires": { - "@pixi/constants": "6.0.4", - "@pixi/core": "6.0.4", - "@pixi/display": "6.0.4", - "@pixi/math": "6.0.4", - "@pixi/utils": "6.0.4" + "peerDependencies": { + "@pixi/constants": "6.5.9", + "@pixi/core": "6.5.9", + "@pixi/display": "6.5.9", + "@pixi/math": "6.5.9", + "@pixi/sprite": "6.5.9", + "@pixi/utils": "6.5.9" } }, - "@pixi/polyfill": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/polyfill/-/polyfill-6.0.4.tgz", - "integrity": "sha512-HM27pSl8iduFqUC4Waa9mt/gRKHi8Pr679it84+U4CwXmJ2lw9DL5dZuyU+QzCp2nPEVGMqx8Ig8c7WLUMvnWA==", + "node_modules/@pixi/polyfill": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/polyfill/-/polyfill-6.5.9.tgz", + "integrity": "sha512-S8ETjbGlW+YtJcC3Ysg9pSAHUsuyU3AvJfCL9PaQFG4/C39J36TqRLufB/9+WzUZ4TBI/CcsEWCh7InHpogT4Q==", "dev": true, - "requires": { + "dependencies": { "object-assign": "^4.1.1", "promise-polyfill": "^8.2.0" } }, - "@pixi/prepare": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/prepare/-/prepare-6.0.4.tgz", - "integrity": "sha512-BrOeKC6eZ+sdiqpefUMGXIt/VDiYDqPDP7XUCRmaI8rGTFT6ZAg/XJQENb9TsVen/4dUp+9/1u7HCFO1TEhaWQ==", + "node_modules/@pixi/prepare": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/prepare/-/prepare-6.5.9.tgz", + "integrity": "sha512-CeSsjQw0Cg6YnqJ15hvOq23SMoUsybsHreYZgsti5UdBZdjUHWpVUMvECUL4Zq1NUJoJ86jvJ9MPBk2/3NDzsQ==", "dev": true, - "requires": { - "@pixi/core": "6.0.4", - "@pixi/display": "6.0.4", - "@pixi/graphics": "6.0.4", - "@pixi/settings": "6.0.4", - "@pixi/text": "6.0.4", - "@pixi/ticker": "6.0.4" - } - }, - "@pixi/runner": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-6.0.4.tgz", - "integrity": "sha512-ta6r36r2vC+fPB27URpSacPGQDtbJbdUoeGCJWAEwX+QI4vx4C9NYAcB0bIg8TLXiigCfA6by/RMnJ0dBiemFA==", + "peerDependencies": { + "@pixi/core": "6.5.9", + "@pixi/display": "6.5.9", + "@pixi/graphics": "6.5.9", + "@pixi/settings": "6.5.9", + "@pixi/text": "6.5.9", + "@pixi/ticker": "6.5.9", + "@pixi/utils": "6.5.9" + } + }, + "node_modules/@pixi/runner": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-6.5.9.tgz", + "integrity": "sha512-xIfmhflbhrDw9ZEDezL46K+/L3pz79KU0qvtmg82eXgJdpsp9irDY2+QcEYgOO1AnYmqO9E1ygZd/RofCxRM1g==", "dev": true }, - "@pixi/settings": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-6.0.4.tgz", - "integrity": "sha512-djiIsmULDwcHWNmEiZKm4zyVopu1NL+fClnbBmtDkGZw7nm37y6dOcdpYawJcxvE4/KLm6pspBiRTnrzdlqW7Q==", + "node_modules/@pixi/settings": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-6.5.9.tgz", + "integrity": "sha512-cOODlDuToO3uixgDRHlsxGbzlgZKNyZn+AeZKHyo6z8JpLh5mYrC4wEgLyHoKSOX0VgNzlSY6VNLthmgpu2gAg==", "dev": true, - "requires": { - "ismobilejs": "^1.1.0" + "peerDependencies": { + "@pixi/constants": "6.5.9" } }, - "@pixi/sprite": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/sprite/-/sprite-6.0.4.tgz", - "integrity": "sha512-6yMoHmfFhSRERLM1PUXceq9e6e1UH0YJkLoPVLv6gxMunfk6jPXeO8p9dDS2FQ8ZMSkO/16BKq27HIMKvF6Cvg==", + "node_modules/@pixi/sprite": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/sprite/-/sprite-6.5.9.tgz", + "integrity": "sha512-pgYHrIES9vZ1HfcFVpvDpdI8sMwzNRhInDkfRCfJX0K3NaAW8AWzu1DPPsn+eYzIF14gpi9JZXS3lT8JtD8lug==", "dev": true, - "requires": { - "@pixi/constants": "6.0.4", - "@pixi/core": "6.0.4", - "@pixi/display": "6.0.4", - "@pixi/math": "6.0.4", - "@pixi/settings": "6.0.4", - "@pixi/utils": "6.0.4" + "peerDependencies": { + "@pixi/constants": "6.5.9", + "@pixi/core": "6.5.9", + "@pixi/display": "6.5.9", + "@pixi/math": "6.5.9", + "@pixi/settings": "6.5.9", + "@pixi/utils": "6.5.9" } }, - "@pixi/sprite-animated": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/sprite-animated/-/sprite-animated-6.0.4.tgz", - "integrity": "sha512-uzNeJiZqcnuRc7HH/HdWxrkU7S3/D57rEGK+AuoaWEE2e2HlBWILGkf78mtqmeIrEChxe2qkOVkf4y3BZkzJVw==", + "node_modules/@pixi/sprite-animated": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/sprite-animated/-/sprite-animated-6.5.9.tgz", + "integrity": "sha512-7UsHBDBQeBPDAooXhYgc7wa7vf0O99W8IqhWNKFx0zbA0MMCOauxqLVfH9LJ3fWR1qoM+J+05MD5U2e5EcIUqQ==", "dev": true, - "requires": { - "@pixi/core": "6.0.4", - "@pixi/sprite": "6.0.4", - "@pixi/ticker": "6.0.4" + "peerDependencies": { + "@pixi/core": "6.5.9", + "@pixi/sprite": "6.5.9", + "@pixi/ticker": "6.5.9" } }, - "@pixi/sprite-tiling": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/sprite-tiling/-/sprite-tiling-6.0.4.tgz", - "integrity": "sha512-4TBsKMeGhwmfsVELorSs+zWWBih37Kd0lPQu0uhcHVV1RKtZxZpkgNoyzKS4d+WInNek5F0E592bYsXkbE6Gag==", + "node_modules/@pixi/sprite-tiling": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/sprite-tiling/-/sprite-tiling-6.5.9.tgz", + "integrity": "sha512-+I7iQfp/xhosyNCGx0JmOk+QGIPHC1kjq/QEhzaMwvFnw7rsoUdhy4B13fF38DMPdzrFpGuyWfdZW5xezRA3Ww==", "dev": true, - "requires": { - "@pixi/constants": "6.0.4", - "@pixi/core": "6.0.4", - "@pixi/display": "6.0.4", - "@pixi/math": "6.0.4", - "@pixi/sprite": "6.0.4", - "@pixi/utils": "6.0.4" + "peerDependencies": { + "@pixi/constants": "6.5.9", + "@pixi/core": "6.5.9", + "@pixi/display": "6.5.9", + "@pixi/math": "6.5.9", + "@pixi/sprite": "6.5.9", + "@pixi/utils": "6.5.9" } }, - "@pixi/spritesheet": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/spritesheet/-/spritesheet-6.0.4.tgz", - "integrity": "sha512-WgOBoi9KvLkHtfSyKSEzjIq6BkLwC+Ckllh+vWgfjfFDhtm7NdOfxW5WVIoCLfyfv5/NSwEMEEffZrcw4zYA/A==", + "node_modules/@pixi/spritesheet": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/spritesheet/-/spritesheet-6.5.9.tgz", + "integrity": "sha512-jf27xXl1/v2kA+Vr8E4/xLAMMO3xxNOk/blZCVr/RwKILS9T3R1Y7f4FICW2Gv4jLreBLvWwYM41NPon9/N3/g==", "dev": true, - "requires": { - "@pixi/core": "6.0.4", - "@pixi/loaders": "6.0.4", - "@pixi/math": "6.0.4", - "@pixi/utils": "6.0.4" + "peerDependencies": { + "@pixi/core": "6.5.9", + "@pixi/loaders": "6.5.9", + "@pixi/math": "6.5.9", + "@pixi/utils": "6.5.9" } }, - "@pixi/text": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/text/-/text-6.0.4.tgz", - "integrity": "sha512-r9UJg8ivWvvS7nNyBaZBKX5zg5UCU37dIYbKXcHyiXnOvXO22tiQBfkPBrZCueeLXRouC9sHmDFya8rb5TE9HA==", + "node_modules/@pixi/text": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/text/-/text-6.5.9.tgz", + "integrity": "sha512-nhIQTplpO9e4bjw32/A0mGYtx9yMV7TeL5PQ+pXKUJjvMKxNiqzK4ULLNvGd8bZm/RED1FpFtxGhuw5x4r+0qQ==", "dev": true, - "requires": { - "@pixi/core": "6.0.4", - "@pixi/math": "6.0.4", - "@pixi/settings": "6.0.4", - "@pixi/sprite": "6.0.4", - "@pixi/utils": "6.0.4" + "peerDependencies": { + "@pixi/core": "6.5.9", + "@pixi/math": "6.5.9", + "@pixi/settings": "6.5.9", + "@pixi/sprite": "6.5.9", + "@pixi/utils": "6.5.9" } }, - "@pixi/text-bitmap": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/text-bitmap/-/text-bitmap-6.0.4.tgz", - "integrity": "sha512-Nh2PXixqF0LFJ0xwmTib2HVWdhgsHn+dSYMVIec8LndDFQMTBw+X2XP1iHjVm0xhqOVdZI+Qfb2Trc0j2lINrw==", + "node_modules/@pixi/text-bitmap": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/text-bitmap/-/text-bitmap-6.5.9.tgz", + "integrity": "sha512-GWV365c4el4a0AKObBaGVhg/XSymOzNcUYtV6S+10pcxzkvpBD+BWfLXtOoyT+q+5sqbBnvOU2SJ8K5wxSqCbA==", "dev": true, - "requires": { - "@pixi/core": "6.0.4", - "@pixi/display": "6.0.4", - "@pixi/loaders": "6.0.4", - "@pixi/math": "6.0.4", - "@pixi/mesh": "6.0.4", - "@pixi/settings": "6.0.4", - "@pixi/text": "6.0.4", - "@pixi/utils": "6.0.4" + "peerDependencies": { + "@pixi/constants": "6.5.9", + "@pixi/core": "6.5.9", + "@pixi/display": "6.5.9", + "@pixi/loaders": "6.5.9", + "@pixi/math": "6.5.9", + "@pixi/mesh": "6.5.9", + "@pixi/settings": "6.5.9", + "@pixi/text": "6.5.9", + "@pixi/utils": "6.5.9" } }, - "@pixi/ticker": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-6.0.4.tgz", - "integrity": "sha512-PkFfPP5vHlgnApLks0Ia0okmFu6KPqBdIyquDqHJAcBdgljedm32KS6K2EH37xelBOzYHScjZ2SQGiiebVfClw==", + "node_modules/@pixi/ticker": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-6.5.9.tgz", + "integrity": "sha512-y7bpdSXc+UkfH2HPvOCV7XBk1eFsmoexsvVGqlRNd9r0sb/OXqcYLvnW4+BEyt5xKp7TpQibNBEKJCNih4dcMQ==", "dev": true, - "requires": { - "@pixi/settings": "6.0.4" + "peerDependencies": { + "@pixi/extensions": "6.5.9", + "@pixi/settings": "6.5.9" } }, - "@pixi/utils": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-6.0.4.tgz", - "integrity": "sha512-35JTWsAJ8Va0vvtUSQvyOr3kGedGKVuJnHDO89B8C8tSFtMpJYrR44vp1b1p1vOjNak+ulGehZc8LzlCqymViQ==", - "dev": true, - "requires": { - "@pixi/constants": "6.0.4", - "@pixi/settings": "6.0.4", + "node_modules/@pixi/utils": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-6.5.9.tgz", + "integrity": "sha512-eLYZihYs9gEyPscoNvxgpZtKTXeCskoZ7TFmI23gAoegOIA3SWUsCudi/DJuQwGJSulitQ0M2BDJoVoSEoonEA==", + "dev": true, + "dependencies": { "@types/earcut": "^2.1.0", - "earcut": "^2.2.2", + "earcut": "^2.2.4", "eventemitter3": "^3.1.0", "url": "^0.11.0" + }, + "peerDependencies": { + "@pixi/constants": "6.5.9", + "@pixi/settings": "6.5.9" } }, - "@rollup/plugin-babel": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", - "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "node_modules/@rollup/plugin-babel": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-module-imports": "^7.10.4", "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } } }, - "@rollup/plugin-commonjs": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-19.0.0.tgz", - "integrity": "sha512-adTpD6ATGbehdaQoZQ6ipDFhdjqsTgpOAhFiPwl+dzre4pPshsecptDPyEFb61JMJ1+mGljktaC4jI8ARMSNyw==", + "node_modules/@rollup/plugin-commonjs": { + "version": "19.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-19.0.2.tgz", + "integrity": "sha512-gBjarfqlC7qs0AutpRW/hrFNm+cd2/QKxhwyFa+srbg1oX7rDsEU3l+W7LAUhsAp9mPJMAkXDhLbQaVwEaE8bA==", "dev": true, - "requires": { + "dependencies": { "@rollup/pluginutils": "^3.1.0", "commondir": "^1.0.1", "estree-walker": "^2.0.1", @@ -1519,2650 +2221,2511 @@ "magic-string": "^0.25.7", "resolve": "^1.17.0" }, - "dependencies": { - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - } + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^2.38.3" } }, - "@rollup/plugin-node-resolve": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.0.tgz", - "integrity": "sha512-41X411HJ3oikIDivT5OKe9EZ6ud6DXudtfNrGbC4nniaxx2esiWjkLOzgnZsWq1IM8YIeL2rzRGLZLBjlhnZtQ==", + "node_modules/@rollup/plugin-node-resolve": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz", + "integrity": "sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==", "dev": true, - "requires": { + "dependencies": { "@rollup/pluginutils": "^3.1.0", "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", "deepmerge": "^4.2.2", + "is-builtin-module": "^3.1.0", "is-module": "^1.0.0", "resolve": "^1.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^2.42.0" } }, - "@rollup/pluginutils": { + "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, - "requires": { + "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" } }, - "@types/chai": { - "version": "4.2.18", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.18.tgz", - "integrity": "sha512-rS27+EkB/RE1Iz3u0XtVL5q36MGDWbgYe7zWiodyKNUnthxY0rukK5V36eiUCtCisB7NN8zKYH6DO2M37qxFEQ==", + "node_modules/@rollup/pluginutils/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/@types/chai": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", + "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", "dev": true }, - "@types/earcut": { + "node_modules/@types/earcut": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@types/earcut/-/earcut-2.1.1.tgz", "integrity": "sha512-w8oigUCDjElRHRRrMvn/spybSMyX8MTkKA5Dv+tS1IE/TgmNZPqUYtvYBXGY8cieSE66gm+szeK+bnbxC2xHTQ==", "dev": true }, - "@types/estree": { + "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 }, - "@types/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", - "dev": true, - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==", + "node_modules/@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", "dev": true }, - "@types/minimist": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz", - "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==", + "node_modules/@types/mocha": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.3.tgz", + "integrity": "sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==", "dev": true }, - "@types/mocha": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.2.tgz", - "integrity": "sha512-Lwh0lzzqT5Pqh6z61P3c3P5nm6fzQK/MMHl9UKeneAeInVflBSz1O2EkX6gM6xfJd7FBXBY5purtLx7fUiZ7Hw==", + "node_modules/@types/node": { + "version": "18.14.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.0.tgz", + "integrity": "sha512-5EWrvLmglK+imbCJY0+INViFWUHg1AHel1sq4ZVSfdcNqGy9Edv3UB9IIzzg+xPaUcAgZYcfVs2fBcwDeZzU0A==", "dev": true }, - "@types/node": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-15.3.1.tgz", - "integrity": "sha512-weaeiP4UF4XgF++3rpQhpIJWsCTS4QJw5gvBhQu6cFIxTwyxWIe3xbnrY/o2lTCQ0lsdb8YIUDUvLR4Vuz5rbw==", + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", "dev": true }, - "@types/normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "node_modules/@types/offscreencanvas": { + "version": "2019.7.0", + "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.0.tgz", + "integrity": "sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg==", "dev": true }, - "@types/resolve": { + "node_modules/@types/resolve": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", "dev": true, - "requires": { + "dependencies": { "@types/node": "*" } }, - "@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "bin": { + "acorn": "bin/acorn" }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/aggregate-error": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", + "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", + "dev": true, "dependencies": { - "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 - } + "clean-stack": "^4.0.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "ansi-colors": { + "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 + "dev": true, + "engines": { + "node": ">=6" + } }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "node_modules/ansi-sequence-parser": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", + "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==", "dev": true }, - "ansi-styles": { + "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, - "requires": { + "dependencies": { "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, - "requires": { + "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" } }, - "arg": { + "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true }, - "argparse": { + "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 }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "node_modules/arrify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-3.0.0.tgz", + "integrity": "sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==", "dev": true, - "requires": { - "array-uniq": "^1.0.1" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "assertion-error": { + "node_modules/assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, - "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==", + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", "dev": true, - "requires": { - "object.assign": "^4.1.0" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "babel-plugin-polyfill-corejs2": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.0.tgz", - "integrity": "sha512-9bNwiR0dS881c5SHnzCmmGlMkJLl0OUZvxrxHo9w/iNoRuqaPjqlvBf4HrovXtQs/au5yKkpcdgfT1cC5PAZwg==", + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", "dev": true, - "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.0", + "dependencies": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "babel-plugin-polyfill-corejs3": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.0.tgz", - "integrity": "sha512-zZyi7p3BCUyzNxLx8KV61zTINkkV65zVkDAFNZmrTCRVhjo1jAS+YLvDJ9Jgd/w2tsAviCwFHReYfxO3Iql8Yg==", + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", + "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.0", - "core-js-compat": "^3.9.1" + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3", + "core-js-compat": "^3.25.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "babel-plugin-polyfill-regenerator": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.0.tgz", - "integrity": "sha512-J7vKbCuD2Xi/eEHxquHN14bXAW9CXtecwuLrOIDJtcZzTaPzV1VdEfoUf9AzcRBMolKUQKM9/GVojeh0hFiqMg==", + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.0" + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "balanced-match": { + "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 }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "binary-extensions": { + "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "brace-expansion": { + "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, - "requires": { + "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "braces": { + "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, - "requires": { + "dependencies": { "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" } }, - "browser-stdout": { + "node_modules/browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, - "browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "node_modules/browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", - "escalade": "^3.1.1", - "node-releases": "^1.1.71" + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "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 }, - "builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", - "dev": true + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "call-bind": { + "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, - "requires": { + "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true - }, - "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", - "dev": true - }, - "camelcase-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", - "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, - "requires": { - "camelcase": "^4.1.0", - "map-obj": "^2.0.0", - "quick-lru": "^1.0.0" + "engines": { + "node": ">=10" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-keys": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz", + "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", + "dev": true, "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - } + "camelcase": "^6.3.0", + "map-obj": "^4.1.0", + "quick-lru": "^5.1.1", + "type-fest": "^1.2.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "caniuse-lite": { - "version": "1.0.30001228", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz", - "integrity": "sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A==", - "dev": true + "node_modules/caniuse-lite": { + "version": "1.0.30001456", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001456.tgz", + "integrity": "sha512-XFHJY5dUgmpMV25UqaD4kVq2LsiaU5rS8fb0f17pCoXQiQslzmFgnfOxfvo1bTpTqf7dwG/N/05CnLCnOEKmzA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] }, - "chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", + "node_modules/chai": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", + "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", "dev": true, - "requires": { + "dependencies": { "assertion-error": "^1.1.0", "check-error": "^1.0.2", - "deep-eql": "^3.0.1", + "deep-eql": "^4.1.2", "get-func-name": "^2.0.0", + "loupe": "^2.3.1", "pathval": "^1.1.1", "type-detect": "^4.0.5" + }, + "engines": { + "node": ">=4" } }, - "chalk": { + "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, - "requires": { + "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "check-error": { + "node_modules/check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true, + "engines": { + "node": "*" + } }, - "chokidar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", - "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, - "requires": { - "anymatch": "~3.1.1", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", "braces": "~3.0.2", - "fsevents": "~2.3.1", - "glob-parent": "~5.1.0", + "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "node_modules/clean-stack": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", + "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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 + "node_modules/clean-stack/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "cliui": { + "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, - "requires": { + "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" - }, + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/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/cliui/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": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "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 - }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "color-convert": { + "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, - "requires": { + "dependencies": { "color-name": "1.1.3" } }, - "color-name": { + "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 - }, - "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", - "dev": true - }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, - "commander": { + "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 }, - "commondir": { + "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, - "concat-map": { + "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=", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "dev": true }, - "core-js-compat": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.12.1.tgz", - "integrity": "sha512-i6h5qODpw6EsHAoIdQhKoZdWn+dGBF3dSS8m5tif36RlWvW3A6+yu2S16QHUo3CrkzrnEskMAt9f8FxmY9fhWQ==", + "node_modules/core-js-compat": { + "version": "3.28.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.28.0.tgz", + "integrity": "sha512-myzPgE7QodMg4nnd3K1TDoES/nADRStM8Gpz0D6nhkwbmwEnE0ZGJgoWsvQ722FR8D7xS0n0LV556RcEicjTyg==", "dev": true, - "requires": { - "browserslist": "^4.16.6", - "semver": "7.0.0" - }, "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } + "browserslist": "^4.21.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "cp-file": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-7.0.0.tgz", - "integrity": "sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw==", + "node_modules/cp-file": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-9.1.0.tgz", + "integrity": "sha512-3scnzFj/94eb7y4wyXRWwvzLFaQp87yyfTnChIjlfYrVqp5lVO3E2hIJMeQIltUT0K2ZAB3An1qXcBmwGyvuwA==", "dev": true, - "requires": { + "dependencies": { "graceful-fs": "^4.1.2", "make-dir": "^3.0.0", "nested-error-stacks": "^2.0.0", "p-event": "^4.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "cpy": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/cpy/-/cpy-8.1.2.tgz", - "integrity": "sha512-dmC4mUesv0OYH2kNFEidtf/skUwv4zePmGeepjyyJ0qTo5+8KhA1o99oIAwVVLzQMAeDJml74d6wPPKb6EZUTg==", + "node_modules/cpy": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cpy/-/cpy-9.0.1.tgz", + "integrity": "sha512-D9U0DR5FjTCN3oMTcFGktanHnAG5l020yvOCR1zKILmAyPP7I/9pl6NFgRbDcmSENtbK1sQLBz1p9HIOlroiNg==", "dev": true, - "requires": { - "arrify": "^2.0.1", - "cp-file": "^7.0.0", - "globby": "^9.2.0", - "has-glob": "^1.0.0", - "junk": "^3.1.0", + "dependencies": { + "arrify": "^3.0.0", + "cp-file": "^9.1.0", + "globby": "^13.1.1", + "junk": "^4.0.0", + "micromatch": "^4.0.4", "nested-error-stacks": "^2.1.0", - "p-all": "^2.1.0", - "p-filter": "^2.1.0", - "p-map": "^3.0.0" + "p-filter": "^3.0.0", + "p-map": "^5.3.0" }, - "dependencies": { - "arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true - } + "engines": { + "node": "^12.20.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "cpy-cli": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/cpy-cli/-/cpy-cli-3.1.1.tgz", - "integrity": "sha512-HCpNdBkQy3rw+uARLuIf0YurqsMXYzBa9ihhSAuxYJcNIrqrSq3BstPfr0cQN38AdMrQiO9Dp4hYy7GtGJsLPg==", + "node_modules/cpy-cli": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/cpy-cli/-/cpy-cli-4.2.0.tgz", + "integrity": "sha512-b04b+cbdr29CdpREPKw/itrfjO43Ty0Aj7wRM6M6LoE4GJxZJCk9Xp+Eu1IqztkKh3LxIBt1tDplENsa6KYprg==", "dev": true, - "requires": { - "cpy": "^8.0.0", - "meow": "^6.1.1" - }, "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "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, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "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 - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, - "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, - "requires": { - "p-locate": "^4.1.0" - } - }, - "map-obj": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.2.1.tgz", - "integrity": "sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ==", - "dev": true - }, - "meow": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-6.1.1.tgz", - "integrity": "sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==", - "dev": true, - "requires": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "^4.0.2", - "normalize-package-data": "^2.5.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.13.1", - "yargs-parser": "^18.1.3" - } - }, - "minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - } - }, - "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, - "requires": { - "p-try": "^2.0.0" - } - }, - "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, - "requires": { - "p-limit": "^2.2.0" - } - }, - "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 - }, - "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, - "requires": { - "@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" - } - }, - "quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "dependencies": { - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - } - } - }, - "redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "requires": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - } - }, - "strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "requires": { - "min-indent": "^1.0.0" - } - }, - "trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } + "cpy": "^9.0.0", + "meow": "^10.1.2" + }, + "bin": { + "cpy": "cli.js" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "create-require": { + "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, - "cross-spawn": { + "node_modules/cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, - "requires": { + "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", "semver": "^5.5.0", "shebang-command": "^1.2.0", "which": "^1.2.9" }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } + "engines": { + "node": ">=4.8" } }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "requires": { - "array-find-index": "^1.0.1" + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, - "requires": { + "dependencies": { "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true + "node_modules/decamelize": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", + "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", "dev": true, - "requires": { + "dependencies": { "decamelize": "^1.1.0", "map-obj": "^1.0.0" }, - "dependencies": { - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - } + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true + "node_modules/decamelize-keys/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", "dev": true, - "requires": { - "type-detect": "^4.0.0" + "engines": { + "node": ">=0.10.0" } }, - "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 + "node_modules/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } }, - "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==", + "node_modules/deepmerge": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", + "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", "dev": true, - "requires": { - "object-keys": "^1.0.12" + "engines": { + "node": ">=0.10.0" } }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "diff": { + "node_modules/diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.3.1" + } }, - "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, - "requires": { - "path-type": "^3.0.0" + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dir-glob/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" } }, - "earcut": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.2.tgz", - "integrity": "sha512-eZoZPPJcUHnfRZ0PjLvx2qBordSiO8ofC3vt+qACLM95u+4DovnbYNpQtJh0DNsWj8RnxrQytD4WA8gj5cRIaQ==", + "node_modules/earcut": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", + "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==", "dev": true }, - "electron-to-chromium": { - "version": "1.3.734", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.734.tgz", - "integrity": "sha512-iQF2mjPZ6zNNq45kbJ6MYZYCBNdv2JpGiJC/lVx4tGJWi9MNg73KkL9sWGN4X4I/CP2SBLWsT8nPADZZpAHIyw==", + "node_modules/electron-to-chromium": { + "version": "1.4.302", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.302.tgz", + "integrity": "sha512-Uk7C+7aPBryUR1Fwvk9VmipBcN9fVsqBO57jV2ZjTm+IZ6BMNqu7EDVEg2HxCNufk6QcWlFsBkhQyQroB2VWKw==", "dev": true }, - "emoji-regex": { + "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 }, - "error-ex": { + "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, - "requires": { + "dependencies": { "is-arrayish": "^0.2.1" } }, - "es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "node_modules/es-abstract": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", + "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", "dev": true, - "requires": { + "dependencies": { + "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", "has": "^1.0.3", - "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.4", + "is-array-buffer": "^3.0.1", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" } }, - "es-to-primitive": { + "node_modules/es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, - "requires": { + "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "escalade": { + "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "escape-string-regexp": { + "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 + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, - "estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true }, - "esutils": { + "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 + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "eventemitter3": { + "node_modules/eventemitter3": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", "dev": true }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" } }, - "fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "dev": true, - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - }, - "dependencies": { - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - } + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" } }, - "fill-range": { + "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, - "requires": { + "dependencies": { "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "find-cache-dir": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", - "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, - "requires": { + "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "find-up": { + "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "requires": { + "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "flat": { + "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true + "dev": true, + "bin": { + "flat": "cli.js" + } }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, - "requires": { - "map-cache": "^0.2.2" + "dependencies": { + "is-callable": "^1.1.3" } }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, - "requires": { + "dependencies": { "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" } }, - "fs.realpath": { + "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, - "fsevents": { + "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, - "optional": true + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } }, - "function-bind": { + "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 }, - "gensync": { + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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 + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, - "get-caller-file": { + "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 + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } }, - "get-func-name": { + "node_modules/get-func-name": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", - "dev": true + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "dev": true, + "engines": { + "node": "*" + } }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "node_modules/get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", "dev": true, - "requires": { + "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, - "requires": { + "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "glob-parent": { + "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "requires": { + "dependencies": { "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true - }, - "globals": { + "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 - }, - "globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } + "dev": true, + "engines": { + "node": ">=4" } }, - "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", - "dev": true - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "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==", + "node_modules/globby": { + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", + "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", "dev": true, - "requires": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4", - "wordwrap": "^1.0.0" + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, "dependencies": { - "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 - } + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "hard-rejection": { + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "has": { + "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, - "requires": { + "dependencies": { "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" } }, - "has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "dev": true + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "has-flag": { + "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 + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "has-glob": { + "node_modules/has-property-descriptors": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-glob/-/has-glob-1.0.0.tgz", - "integrity": "sha1-mqqe7b/7G6OZCnsAEPtnjuAIEgc=", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", "dev": true, - "requires": { - "is-glob": "^3.0.0" - }, "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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 + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "has-values": { + "node_modules/has-tostringtag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "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" } }, - "he": { + "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true + "dev": true, + "bin": { + "he": "bin/he" + } }, - "hosted-git-info": { + "node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, - "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 + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true + "node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "inflight": { + "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, - "requires": { + "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, - "inherits": { + "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 }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", "dev": true, - "requires": { - "kind-of": "^3.0.2" + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", + "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", + "dev": true, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-arrayish": { + "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, - "is-bigint": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", - "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", - "dev": true + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "is-binary-path": { + "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, - "requires": { + "dependencies": { "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "is-boolean-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", - "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, - "requires": { - "call-bind": "^1.0.2" + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", - "dev": true - }, - "is-core-module": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", - "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", + "node_modules/is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", "dev": true, - "requires": { - "has": "^1.0.3" + "dependencies": { + "builtin-modules": "^3.3.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, - "requires": { - "kind-of": "^3.0.2" + "engines": { + "node": ">= 0.4" }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-date-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", - "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "is-extglob": { + "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 - }, - "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 + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "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, - "requires": { + "dependencies": { "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "is-module": { + "node_modules/is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", "dev": true }, - "is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", - "dev": true + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "is-number": { + "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 - }, - "is-number-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", - "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.12.0" + } }, - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "dev": true, - "requires": { - "isobject": "^3.0.1" + "engines": { + "node": ">=0.10.0" } }, - "is-reference": { + "node_modules/is-reference": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, - "requires": { + "dependencies": { "@types/estree": "*" } }, - "is-regex": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", - "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.2" + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-string": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", - "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==", - "dev": true + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "is-symbol": { + "node_modules/is-symbol": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, - "requires": { + "dependencies": { "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "is-windows": { + "node_modules/is-weakref": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "ismobilejs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ismobilejs/-/ismobilejs-1.1.1.tgz", - "integrity": "sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw==", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "jest-worker": { + "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, - "requires": { + "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", "supports-color": "^7.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": "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": { - "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" - } - } + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "js-tokens": { + "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 }, - "js-yaml": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", - "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", + "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, - "requires": { + "dependencies": { "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "jscc": { + "node_modules/jscc": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/jscc/-/jscc-1.1.1.tgz", "integrity": "sha512-anpZkTXwZbxfxLEBMciKxXMHx2xOLK2qhynIhTnoSyC+wGOEPrAoofxnADgblbarn0kijVMt1U71cQGmRF/1Og==", "dev": true, - "requires": { + "dependencies": { "@jsbits/escape-regex-str": "^1.0.2", "@jsbits/get-package-version": "^1.0.2", "magic-string": "^0.25.1", "perf-regexes": "^1.0.1", "skip-regex": "^1.0.2" + }, + "engines": { + "node": ">=6.0" } }, - "jsesc": { + "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } }, - "json-parse-better-errors": { + "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, - "json-parse-even-better-errors": { + "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 }, - "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==", + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "requires": { - "minimist": "^1.2.5" + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" } }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, - "requires": { + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { "graceful-fs": "^4.1.6" } }, - "junk": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", - "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", - "dev": true + "node_modules/junk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/junk/-/junk-4.0.0.tgz", + "integrity": "sha512-ojtSU++zLJ3jQG9bAYjg94w+/DOJtRyD7nPaerMFrBhmdVmiV5/exYH5t4uHga4G/95nT6hr1OJoKIFbYbrW5w==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "kind-of": { + "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "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=", + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, - "load-json-file": { + "node_modules/load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", "dev": true, - "requires": { + "dependencies": { "graceful-fs": "^4.1.2", "parse-json": "^4.0.0", "pify": "^3.0.0", "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" } }, - "locate-path": { + "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "requires": { + "dependencies": { "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.debounce": { + "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=", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true }, - "log-symbols": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", - "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, - "requires": { - "chalk": "^4.0.0" + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/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": { - "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.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "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" - } - } + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/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/log-symbols/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-symbols/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-symbols/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/log-symbols/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" } }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "node_modules/loupe": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", "dev": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" + "dependencies": { + "get-func-name": "^2.0.0" } }, - "lru-cache": { + "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, - "requires": { + "dependencies": { "yallist": "^3.0.2" } }, - "lunr": { + "node_modules/lunr": { "version": "2.3.9", "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", "dev": true }, - "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", "dev": true, - "requires": { - "sourcemap-codec": "^1.4.4" + "dependencies": { + "sourcemap-codec": "^1.4.8" } }, - "make-dir": { + "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, - "requires": { + "dependencies": { "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "make-error": { + "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", - "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", "dev": true, - "requires": { - "object-visit": "^1.0.0" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "marked": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/marked/-/marked-2.0.5.tgz", - "integrity": "sha512-yfCEUXmKhBPLOzEC7c+tc4XZdIeTdGoRCZakFMkCxodr7wDXqoapIME4wjcpBPJLNyUnKJ3e8rb8wlAgnLnaDw==", - "dev": true + "node_modules/marked": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.2.12.tgz", + "integrity": "sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==", + "dev": true, + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } }, - "memorystream": { + "node_modules/memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", - "dev": true + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } }, - "meow": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-5.0.0.tgz", - "integrity": "sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==", - "dev": true, - "requires": { - "camelcase-keys": "^4.0.0", - "decamelize-keys": "^1.0.0", - "loud-rejection": "^1.0.0", - "minimist-options": "^3.0.1", - "normalize-package-data": "^2.3.4", - "read-pkg-up": "^3.0.0", - "redent": "^2.0.0", - "trim-newlines": "^2.0.0", - "yargs-parser": "^10.0.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } - } + "node_modules/meow": { + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz", + "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.2", + "camelcase-keys": "^7.0.0", + "decamelize": "^5.0.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.2", + "read-pkg-up": "^8.0.0", + "redent": "^4.0.0", + "trim-newlines": "^4.0.2", + "type-fest": "^1.2.2", + "yargs-parser": "^20.2.9" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/meow/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/meow/node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/meow/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "merge-stream": { + "node_modules/meow/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/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 }, - "merge2": { + "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true + "dev": true, + "engines": { + "node": ">= 8" + } }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" } }, - "min-indent": { + "node_modules/min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true - }, - "mini-signals": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mini-signals/-/mini-signals-1.2.0.tgz", - "integrity": "sha1-RbCAE8X65RokqhqTXNMXye1yHXQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "requires": { + "dependencies": { "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "minimist-options": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", - "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", "dev": true, - "requires": { + "dependencies": { "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0" + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" }, - "dependencies": { - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - } + "engines": { + "node": ">= 6" } }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } + "node_modules/minimist-options/node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "mocha": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.4.0.tgz", - "integrity": "sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ==", + "node_modules/mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", "dev": true, - "requires": { - "@ungap/promise-all-settled": "1.1.2", + "dependencies": { "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "chokidar": "3.5.1", - "debug": "4.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", - "glob": "7.1.6", - "growl": "1.10.5", + "glob": "7.2.0", "he": "1.2.0", - "js-yaml": "4.0.0", - "log-symbols": "4.0.0", - "minimatch": "3.0.4", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", "ms": "2.1.3", - "nanoid": "3.1.20", - "serialize-javascript": "5.0.1", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", - "which": "2.0.2", - "wide-align": "1.1.3", - "workerpool": "6.1.0", + "workerpool": "6.2.1", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/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/mocha/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, "dependencies": { - "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 - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "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" - } - }, - "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 - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "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, - "requires": { - "has-flag": "^4.0.0" - } - } + "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/mocha/node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "ms": { + "node_modules/mocha/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/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mocha/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/mocha/node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "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 }, - "nanoid": { - "version": "3.1.20", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", - "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", - "dev": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "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/nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } }, - "nested-error-stacks": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz", - "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==", + "node_modules/nested-error-stacks": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz", + "integrity": "sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==", "dev": true }, - "nice-try": { + "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, - "node-releases": { - "version": "1.1.72", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.72.tgz", - "integrity": "sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==", + "node_modules/node-releases": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", "dev": true }, - "normalize-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-newline/-/normalize-newline-3.0.0.tgz", - "integrity": "sha1-HL6oBKukNgAfg5OKsh7AOdaa6dM=", - "dev": true + "node_modules/normalize-newline": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/normalize-newline/-/normalize-newline-4.1.0.tgz", + "integrity": "sha512-ff4jKqMI8Xl50/4Mms/9jPobzAV/UK+kXG2XJ/7AqOmxIx8mqfqTIHYxuAnEgJ2AQeBbLnlbmZ5+38Y9A0w/YA==", + "dev": true, + "dependencies": { + "replace-buffer": "^1.2.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "normalize-package-data": { + "node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "requires": { + "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } } }, - "normalize-path": { + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "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 + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "npm-run-all": { + "node_modules/npm-run-all": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", "dev": true, - "requires": { + "dependencies": { "ansi-styles": "^3.2.1", "chalk": "^2.4.1", "cross-spawn": "^6.0.5", @@ -4172,1274 +4735,1328 @@ "read-pkg": "^3.0.0", "shell-quote": "^1.6.1", "string.prototype.padend": "^3.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": ">= 4" } }, - "object-assign": { + "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 - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "object-inspect": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", - "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==", - "dev": true + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "object-keys": { + "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 - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, - "requires": { - "isobject": "^3.0.0" + "engines": { + "node": ">= 0.4" } }, - "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==", + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "once": { + "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onigasm": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/onigasm/-/onigasm-2.2.5.tgz", - "integrity": "sha512-F+th54mPc0l1lp1ZcFMyL/jTs2Tlq4SqIHKIXGZOR/VkHkF9A7Fr5rRr5+ZG/lWeRsyrClLYRq7s/yFQ/XhWCA==", - "dev": true, - "requires": { - "lru-cache": "^5.1.1" - } - }, - "p-all": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-all/-/p-all-2.1.0.tgz", - "integrity": "sha512-HbZxz5FONzz/z2gJfk6bFca0BCiSRF8jU3yCsWOen/vR6lZjfPOu/e7L3uFzTW1i0H8TlC3vqQstEJPQL4/uLA==", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, - "requires": { - "p-map": "^2.0.0" - }, "dependencies": { - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true - } + "wrappy": "1" } }, - "p-event": { + "node_modules/p-event": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", "dev": true, - "requires": { + "dependencies": { "p-timeout": "^3.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-filter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", - "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", + "node_modules/p-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-3.0.0.tgz", + "integrity": "sha512-QtoWLjXAW++uTX67HZQz1dbTpqBfiidsB6VtQUC9iR85S120+s0T5sO6s+B5MLzFcZkrEd/DGMmCjR+f2Qpxwg==", "dev": true, - "requires": { - "p-map": "^2.0.0" - }, "dependencies": { - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true - } + "p-map": "^5.1.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-finally": { + "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 + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "p-limit": { + "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "requires": { + "dependencies": { "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-locate": { + "node_modules/p-locate": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "requires": { + "dependencies": { "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "node_modules/p-map": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-5.5.0.tgz", + "integrity": "sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==", "dev": true, - "requires": { - "aggregate-error": "^3.0.0" + "dependencies": { + "aggregate-error": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-timeout": { + "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, - "requires": { + "dependencies": { "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" } }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true + "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" + } }, - "parse-json": { + "node_modules/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, - "requires": { + "dependencies": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" } }, - "parse-uri": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/parse-uri/-/parse-uri-1.0.3.tgz", - "integrity": "sha512-upMnGxNcm+45So85HoguwZTVZI9u11i36DdxJfGF2HYWS2eh3TIx7+/tTi7qrEq15qzGkVhsKjesau+kCk48pA==", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-exists": { + "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 + "dev": true, + "engines": { + "node": ">=8" + } }, - "path-is-absolute": { + "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 + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "path-key": { + "node_modules/path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "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 }, - "path-type": { + "node_modules/path-type": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, - "requires": { + "dependencies": { "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-type/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" } }, - "pathval": { + "node_modules/pathval": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, - "perf-regexes": { + "node_modules/perf-regexes": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/perf-regexes/-/perf-regexes-1.0.1.tgz", "integrity": "sha512-L7MXxUDtqr4PUaLFCDCXBfGV/6KLIuSEccizDI7JxT+c9x1G1v04BQ4+4oag84SHaCdrBgQAIs/Cqn+flwFPng==", - "dev": true + "dev": true, + "engines": { + "node": ">=6.14" + } }, - "picomatch": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", - "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==", + "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 }, - "pidtree": { + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", - "dev": true + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true + "node_modules/pixi.js": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/pixi.js/-/pixi.js-6.5.9.tgz", + "integrity": "sha512-j617kWuQGaIoyohFCR+SFpjQg6rGDsqLJjGF59NqEE2AvvjS0Q8P4EMkV1YAhg7NRFKUMiPof0W6W3xsd8Tr3w==", + "dev": true, + "dependencies": { + "@pixi/accessibility": "6.5.9", + "@pixi/app": "6.5.9", + "@pixi/compressed-textures": "6.5.9", + "@pixi/constants": "6.5.9", + "@pixi/core": "6.5.9", + "@pixi/display": "6.5.9", + "@pixi/extensions": "6.5.9", + "@pixi/extract": "6.5.9", + "@pixi/filter-alpha": "6.5.9", + "@pixi/filter-blur": "6.5.9", + "@pixi/filter-color-matrix": "6.5.9", + "@pixi/filter-displacement": "6.5.9", + "@pixi/filter-fxaa": "6.5.9", + "@pixi/filter-noise": "6.5.9", + "@pixi/graphics": "6.5.9", + "@pixi/interaction": "6.5.9", + "@pixi/loaders": "6.5.9", + "@pixi/math": "6.5.9", + "@pixi/mesh": "6.5.9", + "@pixi/mesh-extras": "6.5.9", + "@pixi/mixin-cache-as-bitmap": "6.5.9", + "@pixi/mixin-get-child-by-name": "6.5.9", + "@pixi/mixin-get-global-position": "6.5.9", + "@pixi/particle-container": "6.5.9", + "@pixi/polyfill": "6.5.9", + "@pixi/prepare": "6.5.9", + "@pixi/runner": "6.5.9", + "@pixi/settings": "6.5.9", + "@pixi/sprite": "6.5.9", + "@pixi/sprite-animated": "6.5.9", + "@pixi/sprite-tiling": "6.5.9", + "@pixi/spritesheet": "6.5.9", + "@pixi/text": "6.5.9", + "@pixi/text-bitmap": "6.5.9", + "@pixi/ticker": "6.5.9", + "@pixi/utils": "6.5.9" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/pixijs" + } }, - "pixi.js": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/pixi.js/-/pixi.js-6.0.4.tgz", - "integrity": "sha512-zAlwr5x9xytaflmZiZWl/ZhlSf+lZzeJG+Hexa7Buf7cvEhHPfSITy4NNk0+qnMXKooQidikBmypShDsj2jAdg==", - "dev": true, - "requires": { - "@pixi/accessibility": "6.0.4", - "@pixi/app": "6.0.4", - "@pixi/compressed-textures": "6.0.4", - "@pixi/constants": "6.0.4", - "@pixi/core": "6.0.4", - "@pixi/display": "6.0.4", - "@pixi/extract": "6.0.4", - "@pixi/filter-alpha": "6.0.4", - "@pixi/filter-blur": "6.0.4", - "@pixi/filter-color-matrix": "6.0.4", - "@pixi/filter-displacement": "6.0.4", - "@pixi/filter-fxaa": "6.0.4", - "@pixi/filter-noise": "6.0.4", - "@pixi/graphics": "6.0.4", - "@pixi/interaction": "6.0.4", - "@pixi/loaders": "6.0.4", - "@pixi/math": "6.0.4", - "@pixi/mesh": "6.0.4", - "@pixi/mesh-extras": "6.0.4", - "@pixi/mixin-cache-as-bitmap": "6.0.4", - "@pixi/mixin-get-child-by-name": "6.0.4", - "@pixi/mixin-get-global-position": "6.0.4", - "@pixi/particles": "6.0.4", - "@pixi/polyfill": "6.0.4", - "@pixi/prepare": "6.0.4", - "@pixi/runner": "6.0.4", - "@pixi/settings": "6.0.4", - "@pixi/sprite": "6.0.4", - "@pixi/sprite-animated": "6.0.4", - "@pixi/sprite-tiling": "6.0.4", - "@pixi/spritesheet": "6.0.4", - "@pixi/text": "6.0.4", - "@pixi/text-bitmap": "6.0.4", - "@pixi/ticker": "6.0.4", - "@pixi/utils": "6.0.4" - } - }, - "pkg-dir": { + "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, - "requires": { + "dependencies": { "find-up": "^4.0.0" }, - "dependencies": { - "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, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "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, - "requires": { - "p-locate": "^4.1.0" - } - }, - "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, - "requires": { - "p-try": "^2.0.0" - } - }, - "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, - "requires": { - "p-limit": "^2.2.0" - } - }, - "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": ">=8" } }, - "pkg-ok": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/pkg-ok/-/pkg-ok-2.3.1.tgz", - "integrity": "sha512-ObdQTDZO+zUJpljXM5HZdx+354o5qbQUs05oilAp2WisGoAmFw80y4RKMduZOmGpuXV1DWJ7PkZnkybd8QB68g==", + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "requires": { - "chalk": "^2.4.1", - "meow": "^5.0.0", - "normalize-newline": "^3.0.0" + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } }, - "prettier": { + "node_modules/pkg-dir/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.0.tgz", - "integrity": "sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==", - "dev": true + "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" + } }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-ok": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-ok/-/pkg-ok-3.0.0.tgz", + "integrity": "sha512-CkIuh/Wxm0qs0stacx7hEKgtzYqtST0ElGGdSdq14Jknrjd2r8RcyZNvD+oVAIDChL34ZrJLNjvSBMBJG1Ipsw==", + "dev": true, + "dependencies": { + "chalk": "^5.0.0", + "meow": "^10.0.0", + "normalize-newline": "^4.0.0" + }, + "bin": { + "pkg-ok": "dist/bin.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } }, - "promise-polyfill": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.0.tgz", - "integrity": "sha512-k/TC0mIcPVF6yHhUvwAp7cvL6I2fFV7TzF1DuGPI8mBh4QQazf36xCKEHKTZKRysEoTQoQdKyP25J8MPJp7j5g==", + "node_modules/pkg-ok/node_modules/chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/prettier": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", + "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/promise-polyfill": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.3.0.tgz", + "integrity": "sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg==", "dev": true }, - "punycode": { + "node_modules/punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", "dev": true }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "quick-lru": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", - "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", - "dev": true + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "randombytes": { + "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, - "requires": { + "dependencies": { "safe-buffer": "^5.1.0" } }, - "read-pkg": { + "node_modules/read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", "dev": true, - "requires": { + "dependencies": { "load-json-file": "^4.0.0", "normalize-package-data": "^2.3.2", "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } + "node_modules/read-pkg-up": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", + "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", + "dev": true, + "dependencies": { + "find-up": "^5.0.0", + "read-pkg": "^6.0.0", + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "node_modules/read-pkg-up/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, - "requires": { - "picomatch": "^2.2.1" + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/read-pkg-up/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" } }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "node_modules/read-pkg-up/node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, - "requires": { - "resolve": "^1.1.6" + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" } }, - "redent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", - "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "node_modules/read-pkg-up/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/read-pkg-up/node_modules/read-pkg": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", + "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^3.0.2", + "parse-json": "^5.2.0", + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/read-pkg-up/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/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/redent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", + "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", "dev": true, - "requires": { - "indent-string": "^3.0.0", - "strip-indent": "^2.0.0" + "dependencies": { + "indent-string": "^5.0.0", + "strip-indent": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "regenerate": { + "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 }, - "regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "node_modules/regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", "dev": true, - "requires": { - "regenerate": "^1.4.0" + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" } }, - "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", "dev": true }, - "regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "node_modules/regenerator-transform": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", "dev": true, - "requires": { + "dependencies": { "@babel/runtime": "^7.8.4" } }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "node_modules/regexpu-core": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.1.tgz", + "integrity": "sha512-nCOzW2V/X15XpLsK2rlgdwrysrBq+AauCn+omItIz4R1pIcmeot5zvjdmOBRLzEH/CkC6IxMJVmxDe3QcMuNVQ==", "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" } }, - "regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", - "dev": true - }, - "regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, - "requires": { + "dependencies": { "jsesc": "~0.5.0" }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } + "bin": { + "regjsparser": "bin/parser" } }, - "repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true + "node_modules/replace-buffer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/replace-buffer/-/replace-buffer-1.2.1.tgz", + "integrity": "sha512-ly3OKwKu+3T55DjP5PjIMzxgz9lFx6dQnBmAIxryZyRKl8f22juy12ShOyuq8WrQE5UlFOseZgQZDua0iF9DHw==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "require-directory": { + "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 - }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "engines": { + "node": ">=0.10.0" } }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "resource-loader": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/resource-loader/-/resource-loader-3.0.1.tgz", - "integrity": "sha512-fBuCRbEHdLCI1eglzQhUv9Rrdcmqkydr1r6uHE2cYHvRBrcLXeSmbE/qI/urFt8rPr/IGxir3BUwM5kUK8XoyA==", + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dev": true, - "requires": { - "mini-signals": "^1.2.0", - "parse-uri": "^1.0.0" + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } }, - "rimraf": { + "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, - "requires": { + "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "rollup": { - "version": "2.48.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.48.0.tgz", - "integrity": "sha512-wl9ZSSSsi5579oscSDYSzGn092tCS076YB+TQrzsGuSfYyJeep8eEWj0eaRjuC5McuMNmcnR8icBqiE/FWNB1A==", + "node_modules/rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", "dev": true, - "requires": { - "fsevents": "~2.3.1" + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "rollup-plugin-jscc": { + "node_modules/rollup-plugin-jscc": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/rollup-plugin-jscc/-/rollup-plugin-jscc-2.0.0.tgz", "integrity": "sha512-5jG9q79K2u5uRBTKA+GA4gqt1zA7qHQRpcabZMoVs913gr75s428O7K3r58n2vADDzwIhiOKMo7rCMhOyks6dw==", "dev": true, - "requires": { + "dependencies": { "@jsbits/get-package-version": "^1.0.3", "jscc": "^1.1.1", "rollup-pluginutils": "^2.8.2" + }, + "engines": { + "node": ">=10.12.0" + }, + "peerDependencies": { + "rollup": ">=2" } }, - "rollup-plugin-peer-deps-external": { + "node_modules/rollup-plugin-peer-deps-external": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/rollup-plugin-peer-deps-external/-/rollup-plugin-peer-deps-external-2.2.4.tgz", "integrity": "sha512-AWdukIM1+k5JDdAqV/Cxd+nejvno2FVLVeZ74NKggm3Q5s9cbbcOgUPGdbxPi4BXu7xGaZ8HG12F+thImYu/0g==", - "dev": true + "dev": true, + "peerDependencies": { + "rollup": "*" + } }, - "rollup-plugin-terser": { + "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==", + "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser", "dev": true, - "requires": { + "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/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/rollup-plugin-typescript2": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.34.1.tgz", + "integrity": "sha512-P4cHLtGikESmqi1CA+tdMDUv8WbQV48mzPYt77TSTOPJpERyZ9TXdDgjSDix8Fkqce6soYz3+fa4lrC93IEkcw==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^4.1.2", + "find-cache-dir": "^3.3.2", + "fs-extra": "^10.0.0", + "semver": "^7.3.7", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "rollup": ">=1.26.3", + "typescript": ">=2.4.0" + } + }, + "node_modules/rollup-plugin-typescript2/node_modules/@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dev": true, "dependencies": { - "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, - "requires": { - "randombytes": "^2.1.0" - } - } + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" } }, - "rollup-plugin-typescript2": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.30.0.tgz", - "integrity": "sha512-NUFszIQyhgDdhRS9ya/VEmsnpTe+GERDMmFo0Y+kf8ds51Xy57nPNGglJY+W6x1vcouA7Au7nsTgsLFj2I0PxQ==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^4.1.0", - "find-cache-dir": "^3.3.1", - "fs-extra": "8.1.0", - "resolve": "1.20.0", - "tslib": "2.1.0" - }, - "dependencies": { - "@rollup/pluginutils": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.0.tgz", - "integrity": "sha512-TrBhfJkFxA+ER+ew2U2/fHbebhLT/l/2pRk0hfj9KusXUuRXd2v0R58AfaZK9VXDQ4TogOSEmICVrQAA3zFnHQ==", - "dev": true, - "requires": { - "estree-walker": "^2.0.1", - "picomatch": "^2.2.2" - } - }, - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - } + "node_modules/rollup-plugin-typescript2/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/rollup-plugin-typescript2/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "rollup-pluginutils": { + "node_modules/rollup-plugin-typescript2/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/rollup-pluginutils": { "version": "2.8.2", "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", "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 - } + "estree-walker": "^0.6.1" } }, - "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==", + "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 }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", "dev": true, - "requires": { - "ret": "~0.1.10" + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "semver": { + "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 - }, - "serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", "dev": true, - "requires": { - "randombytes": "^2.1.0" + "bin": { + "semver": "bin/semver.js" } }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" } }, - "shebang-command": { + "node_modules/shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, - "requires": { + "dependencies": { "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "shebang-regex": { + "node_modules/shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "shell-quote": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", - "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", - "dev": true + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "shelljs": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", - "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", + "node_modules/shell-quote": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", + "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==", "dev": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "shiki": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.9.3.tgz", - "integrity": "sha512-NEjg1mVbAUrzRv2eIcUt3TG7X9svX7l3n3F5/3OdFq+/BxUdmBOeKGiH4icZJBLHy354Shnj6sfBTemea2e7XA==", + "node_modules/shiki": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.1.tgz", + "integrity": "sha512-+Jz4nBkCBe0mEDqo1eKRcCdjRtrCjozmcbTUjbPTX7OOJfEbTZzlUWlZtGe3Gb5oV1/jnojhG//YZc3rs9zSEw==", "dev": true, - "requires": { - "onigasm": "^2.2.5", - "vscode-textmate": "^5.2.0" + "dependencies": { + "ansi-sequence-parser": "^1.1.0", + "jsonc-parser": "^3.2.0", + "vscode-oniguruma": "^1.7.0", + "vscode-textmate": "^8.0.0" } }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true + "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" + } }, - "skip-regex": { + "node_modules/skip-regex": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/skip-regex/-/skip-regex-1.0.2.tgz", "integrity": "sha512-pEjMUbwJ5Pl/6Vn6FsamXHXItJXSRftcibixDmNCWbWhic0hzHrwkMZo0IZ7fMRH9KxcWDFSkzhccB4285PutA==", - "dev": true - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "engines": { + "node": ">=4.2" } }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, - "requires": { + "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" - }, - "dependencies": { - "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 - } } }, - "source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "dev": true + "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" + } }, - "sourcemap-codec": { + "node_modules/sourcemap-codec": { "version": "1.4.8", "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", "dev": true }, - "spdx-correct": { + "node_modules/spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, - "requires": { + "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" } }, - "spdx-exceptions": { + "node_modules/spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true }, - "spdx-expression-parse": { + "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, - "requires": { + "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, - "spdx-license-ids": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.8.tgz", - "integrity": "sha512-NDgA96EnaLSvtbM7trJj+t1LUR3pirkDCcz9nOUlPb5DMBGsH7oES6C3hs3j7R9oHEa1EMvReS/BUAIT5Tcr0g==", + "node_modules/spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", "dev": true }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "node_modules/string.prototype.padend": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz", + "integrity": "sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==", "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "string.prototype.padend": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.2.tgz", - "integrity": "sha512-/AQFLdYvePENU3W5rgurfWSMU6n+Ww8n/3cUt7E+vPBB/D7YDG8x+qjoFs4M/alR2bW7Qg6xMjVwWUOvuQ0XpQ==", + "node_modules/string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", "dev": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "node_modules/string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", "dev": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "engines": { + "node": ">=4" } }, - "strip-ansi": { + "node_modules/strip-indent": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", + "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", "dev": true, - "requires": { - "ansi-regex": "^3.0.0" + "dependencies": { + "min-indent": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "strip-indent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", - "dev": true - }, - "strip-json-comments": { + "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 + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "supports-color": { + "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, - "requires": { + "dependencies": { "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "terser": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.0.tgz", - "integrity": "sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g==", + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.19" + "engines": { + "node": ">= 0.4" }, - "dependencies": { - "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 - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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 - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "node_modules/terser": { + "version": "5.16.4", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.4.tgz", + "integrity": "sha512-5yEGuZ3DZradbogeYQ1NaGz7rXVBDWujWlx1PT8efXO6Txn+eWbfKqB2bTDVmFXmePFkoLU6XI8UektMIEA0ug==", "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" } }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "engines": { + "node": ">=4" } }, - "to-regex-range": { + "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, - "requires": { + "dependencies": { "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, - "trim-newlines": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", - "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", - "dev": true + "node_modules/trim-newlines": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.0.2.tgz", + "integrity": "sha512-GJtWyq9InR/2HRiLZgpIKv+ufIKrVrvjQWEj7PxAXNc5dwbNJkqhAUoAGgzRmULAnoOM5EIpveYd3J2VeSAIew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "ts-node": { + "node_modules/ts-node": { "version": "9.1.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", "dev": true, - "requires": { + "dependencies": { "arg": "^4.1.0", "create-require": "^1.1.0", "diff": "^4.0.1", @@ -5447,373 +6064,412 @@ "source-map-support": "^0.5.17", "yn": "3.1.1" }, - "dependencies": { - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - } + "bin": { + "ts-node": "dist/bin.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "typescript": ">=2.7" } }, - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", "dev": true }, - "type-detect": { + "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 + "dev": true, + "engines": { + "node": ">=4" + } }, - "type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true + "node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "typedoc": { - "version": "0.20.36", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.20.36.tgz", - "integrity": "sha512-qFU+DWMV/hifQ9ZAlTjdFO9wbUIHuUBpNXzv68ZyURAP9pInjZiO4+jCPeAzHVcaBCHER9WL/+YzzTt6ZlN/Nw==", + "node_modules/typedoc": { + "version": "0.23.25", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.25.tgz", + "integrity": "sha512-O1he153qVyoCgJYSvIyY3bPP1wAJTegZfa6tL3APinSZhJOf8CSd8F/21M6ex8pUY/fuY6n0jAsT4fIuMGA6sA==", "dev": true, - "requires": { - "colors": "^1.4.0", - "fs-extra": "^9.1.0", - "handlebars": "^4.7.7", - "lodash": "^4.17.21", + "dependencies": { "lunr": "^2.3.9", - "marked": "^2.0.3", - "minimatch": "^3.0.0", - "progress": "^2.0.3", - "shelljs": "^0.8.4", - "shiki": "^0.9.3", - "typedoc-default-themes": "^0.12.10" - }, - "dependencies": { - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - } + "marked": "^4.2.12", + "minimatch": "^6.1.6", + "shiki": "^0.14.1" + }, + "bin": { + "typedoc": "bin/typedoc" + }, + "engines": { + "node": ">= 14.14" + }, + "peerDependencies": { + "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x" } }, - "typedoc-default-themes": { - "version": "0.12.10", - "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.12.10.tgz", - "integrity": "sha512-fIS001cAYHkyQPidWXmHuhs8usjP5XVJjWB8oZGqkTowZaz3v7g3KDZeeqE82FBrmkAnIBOY3jgy7lnPnqATbA==", - "dev": true + "node_modules/typedoc/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } }, - "typescript": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", - "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", - "dev": true + "node_modules/typedoc/node_modules/minimatch": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", + "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, - "uglify-js": { - "version": "3.13.7", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.7.tgz", - "integrity": "sha512-1Psi2MmnZJbnEsgJJIlfnd7tFlJfitusmR7zDI8lXlFI0ACD4/Rm/xdrU8bh6zF0i74aiVoBtkRiFulkrmh3AA==", + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true, - "optional": true + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } }, - "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "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, - "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "engines": { + "node": ">=4" } }, - "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", - "dev": true + "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" + } }, - "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", - "dev": true + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" + "engines": { + "node": ">=4" } }, - "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 + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { + "node_modules/url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", "dev": true, - "requires": { + "dependencies": { "punycode": "1.3.2", "querystring": "0.2.0" } }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "validate-npm-package-license": { + "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, - "requires": { + "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, - "vscode-textmate": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.4.0.tgz", - "integrity": "sha512-c0Q4zYZkcLizeYJ3hNyaVUM2AA8KDhNCA3JvXY8CeZSJuBdAy3bAvSbv46RClC4P3dSO9BdwhnKEx2zOo6vP/w==", + "node_modules/vscode-oniguruma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", "dev": true }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } + "node_modules/vscode-textmate": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", + "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", + "dev": true }, - "which-boxed-primitive": { + "node_modules/which-boxed-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, - "requires": { + "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", "is-number-object": "^1.0.4", "is-string": "^1.0.5", "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", "dev": true, - "requires": { - "string-width": "^1.0.2 || 2" + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, - "workerpool": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", - "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", + "node_modules/workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", "dev": true }, - "wrap-ansi": { + "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, - "requires": { + "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-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/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": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "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" - } - }, - "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 - }, - "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 - }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } + "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/wrap-ansi/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/wrap-ansi/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/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "wrappy": { + "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, - "y18n": { + "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 + "dev": true, + "engines": { + "node": ">=10" + } }, - "yallist": { + "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, - "yargs": { + "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, - "requires": { + "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", @@ -5822,70 +6478,119 @@ "y18n": "^5.0.5", "yargs-parser": "^20.2.2" }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "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 - }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } + "engines": { + "node": ">=10" } }, - "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true + "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" + } }, - "yargs-unparser": { + "node_modules/yargs-unparser": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, - "requires": { + "dependencies": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", "flat": "^5.0.2", "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser/node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs-unparser/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/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/yargs/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/yargs/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/yargs/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" } }, - "yn": { + "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "yocto-queue": { + "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/package.json b/package.json index 58de5ab..c8bd873 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "isometric", "pixijs" ], - "main": "dist/cjs/traviso.js", + "main": "./dist/cjs/traviso.js", "module": "dist/es/traviso.js", "iife": "dist/browser/traviso.js", "types": "types/index.d.ts", @@ -53,7 +53,6 @@ "test:package": "pkg-ok", "preversion": "npm-run-all clean build test" }, - "dependencies": {}, "peerDependencies": { "pixi.js": "^6.0.4" }, @@ -66,20 +65,20 @@ "@types/chai": "^4.2.18", "@types/mocha": "^8.2.2", "chai": "^4.3.4", - "cpy-cli": "^3.1.1", - "mocha": "^8.4.0", + "cpy-cli": "^4.2.0", + "mocha": "^10.2.0", "npm-run-all": "^4.1.5", "pixi.js": "^6.0.4", - "pkg-ok": "^2.3.1", + "pkg-ok": "^3.0.0", "prettier": "^2.3.0", "rimraf": "^3.0.2", "rollup": "^2.47.0", "rollup-plugin-jscc": "^2.0.0", "rollup-plugin-peer-deps-external": "^2.2.4", "rollup-plugin-terser": "^7.0.2", - "rollup-plugin-typescript2": "^0.30.0", + "rollup-plugin-typescript2": "^0.34.1", "ts-node": "^9.1.1", - "typedoc": "^0.20.36", + "typedoc": "^0.23.25", "typescript": "^4.2.4" } } diff --git a/rollup.config.js b/rollup.config.js index 0fa756f..b057c22 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -3,47 +3,39 @@ import resolve from '@rollup/plugin-node-resolve'; import pkg from './package.json'; import babel from '@rollup/plugin-babel'; import commonjs from '@rollup/plugin-commonjs'; -// import typescript from '@rollup/plugin-typescript'; import typescript from 'rollup-plugin-typescript2'; -// import { uglify } from 'rollup-plugin-uglify'; import { terser } from 'rollup-plugin-terser'; import jscc from 'rollup-plugin-jscc'; -/** - * Get the JSCC plugin for preprocessing code. - * @param {boolean} debug Build is for debugging - */ function preprocessPlugin() { return jscc({ values: { - // _DEBUG: debug, - // _PROD: !debug, _VERSION: pkg.version, }, }); } const extensions = ['.ts', '.tsx']; + const globals = { 'pixi.js': 'PIXI', }; + const external = Object.keys(globals); + const plugins = [ preprocessPlugin(), peerDepsExternal(), + resolve({ extensions, preferBuiltins: false, }), - // typescript({ - // tsconfig: 'tsconfig.build.json' - // }), - // commonjs(), + typescript({ useTsconfigDeclarationDir: true, tsconfigOverride: { compilerOptions: { - // exclude: ['**/*.stories.*'], noEmit: true, declaration: true, emitDeclarationOnly: false, @@ -51,15 +43,12 @@ const plugins = [ include: ['src'], }, }), - // typescript({ - // tsconfig: './tsconfig.json', - // declaration: false, - // noEmit: true, - // }), + commonjs({ exclude: 'node_modules', ignoreGlobal: true, }), + babel({ exclude: 'node_modules/**', extensions, @@ -69,18 +58,13 @@ const plugins = [ '@babel/preset-env', // '@babel/preset-typescript' ], + minified: false, }), - // uglify({ - // sourcemap: { - // filename: "out.js", - // url: "out.js.map" - // } - // }), - // terser(), ]; const compiledDate = new Date().toUTCString().replace(/GMT/g, 'UTC'); + const banner = [ `/*!`, ` * ${pkg.name} - v${pkg.version}`, @@ -93,24 +77,15 @@ const banner = [ ` * http://www.opensource.org/licenses/mit-license`, ` */`, ].join('\n'); -// const comments = (node, comment) => { -// var text = comment.value; -// var type = comment.type; -// if (type == 'comment2') { -// // multiline comment -// return /@preserve|@license|@cc_on/i.test(text); -// } -// }; + const comments = (node, comment) => comment.line === 1; export default [ - // iife, cjs, es { input: 'src/index.ts', external, output: [ { - // dir: 'dist', file: pkg.iife, format: 'iife', globals, @@ -126,16 +101,13 @@ export default [ banner, }, { - // dir: 'dist', file: pkg.module, format: 'es', globals, sourcemap: true, banner, }, - // minify/uglify phase { - // dir: 'dist', file: 'dist/browser/traviso.min.js', format: 'iife', globals, @@ -153,62 +125,4 @@ export default [ ], plugins, }, - // // minify/uglify phase - // { - // input: 'src/index.ts', - // output: { - // file: 'dist/browser/traviso.min.js', - // format: 'iife', - // sourcemap: true, - // // globals, - // // banner, - // name: 'TRAVISO', - // }, - // plugins: [ - // peerDepsExternal(), - // resolve({ - // extensions, - // preferBuiltins: false, - // }), - // terser({ - // // // output: { comments }, - // // // mangle: { - // // // reserved: ['TRAVISO'], - // // // toplevel: false, - // // // properties: { - // // // reserved: ['TRAVISO'] - // // // }, - // // // }, - // // toplevel: true, - // // mangle: false, - // output: { - // comments: false, - // // beautify: true, - // }, - // }), - // ], - // }, - // // ts - // { - // input: 'src/index.ts', - // output: { - // dir: 'dist', - // // file: 'dist/index.js', - // // format: 'iife', - // sourcemap: false, - // }, - // plugins: [ - // typescript({ - // useTsconfigDeclarationDir: true, - // tsconfigOverride: { - // compilerOptions: { - // // exclude: ['**/*.stories.*'], - // noEmit: true, - // declaration: true, - // emitDeclarationOnly: true, - // } - // }, - // }), - // ], - // }, ]; diff --git a/tsconfig.json b/tsconfig.json index 64d0696..a4467a3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,61 +1,29 @@ { "compilerOptions": { - // This defines the version of JavaScript to compile the TypeScript code to. - // Setting "esnext" allows you to play with all the latest features, but if - // you need greater compatibility with older browsers, you can set this to another option. "target": "es5", - - // You should set this option to "commonjs" to make sure everybody can use your package, - // whether they’re using TypeScript or JavaScript, are targeting Node.js or the Web. "module": "ES2015", - - // Activate strict compiler checks. "strict": true, - - // Do not compile when there are unused variables or imports. "noUnusedLocals": true, - "noImplicitAny": true, "noUnusedParameters": false, "noImplicitReturns": true, "strictNullChecks": false, - - // Let TypeScript transpile JSX. Setting this can save you from setting up Babel. - // You can read more at https://www.typescriptlang.org/docs/handbook/jsx.html#basic-usage "jsx": "react", - - // Allow TypeScript to import JSON files directly. "resolveJsonModule": true, - "allowSyntheticDefaultImports": true, "moduleResolution": "node", "esModuleInterop": true, - - // Remove comments from generated JavaScript code. "removeComments": false, - - // "outDir": "./dist", - // "rootDir": "./src", - - // Generate a source map from JS to TS. Useful for debugging. - // Don't forget to blacklist ./dist/**/*.js.map in the "files" key of package.json "sourceMap": true, - - // Generate a .d.ts file, for TypeScript users. "declaration": true, "declarationMap": false, "declarationDir": "types", - - // Do not emit output files. Prevents us from accidentally building with this file - // instead of tsconfig.build.json. "noEmit": true, - "baseUrl": "./", "paths": { "mini-signals": ["node_modules/resource-loader/typings/mini-signals.d.ts"] } }, - // Include all TypeScript files, including those that shouldn't be built. "include": ["src", "benchmark"], "exclude": ["dist", "types", "docs", "**/node_modules", "**/rollup.config.js"], "ts-node": {