From a67b9daaaa2ac413e4fee43caca31bf854cbdeb1 Mon Sep 17 00:00:00 2001 From: Bill Date: Thu, 15 Dec 2022 13:51:10 -0500 Subject: [PATCH] Updates --- .editorconfig | 16 - .eslintrc.json | 135 + .vscode/settings.json | 24 +- index.ts | 2 - package-lock.json | 3208 ----------------- package.json | 30 +- src/app/Application.ts | 76 - src/app/IApplication.ts | 9 - src/app/avatar/PlaceHolderAvatarImage.ts | 18 - src/app/index.ts | 3 - src/app/router/HttpRouter.ts | 6 - .../habbo-imaging/HabboImagingRouter.ts | 6 - .../router/habbo-imaging/handlers/index.ts | 1 - src/app/router/habbo-imaging/index.ts | 1 - .../avatar/AvatarAssetDownloadLibrary.ts | 12 +- .../avatar/AvatarAssetDownloadManager.ts | 21 +- src/{app => }/avatar/AvatarFigureContainer.ts | 8 +- src/{app => }/avatar/AvatarImage.ts | 28 +- .../avatar/AvatarImageBodyPartContainer.ts | 16 +- .../avatar/AvatarImagePartContainer.ts | 25 +- src/{app => }/avatar/AvatarRenderManager.ts | 110 +- src/{app => }/avatar/AvatarStructure.ts | 24 +- .../avatar/EffectAssetDownloadLibrary.ts | 14 +- .../avatar/EffectAssetDownloadManager.ts | 21 +- src/{app => }/avatar/FigureDataContainer.ts | 24 +- .../avatar/IAvatarFigureContainer.ts | 0 src/{app => }/avatar/IAvatarImage.ts | 4 +- src/{app => }/avatar/IAvatarRenderManager.ts | 6 +- .../avatar/actions/ActionDefinition.ts | 34 +- src/{app => }/avatar/actions/ActionType.ts | 10 +- .../avatar/actions/ActiveActionData.ts | 16 +- .../avatar/actions/AvatarActionManager.ts | 12 +- .../avatar/actions/IActionDefinition.ts | 0 .../avatar/actions/IActiveActionData.ts | 0 src/{app => }/avatar/actions/index.ts | 0 src/{app => }/avatar/alias/AssetAlias.ts | 6 +- .../avatar/alias/AssetAliasCollection.ts | 13 +- src/{app => }/avatar/alias/index.ts | 0 .../avatar/animation/AddDataContainer.ts | 2 +- src/{app => }/avatar/animation/Animation.ts | 2 +- .../avatar/animation/AnimationManager.ts | 2 +- .../animation/AvatarAnimationLayerData.ts | 2 +- .../avatar/animation/AvatarDataContainer.ts | 2 +- .../animation/DirectionDataContainer.ts | 2 +- src/{app => }/avatar/animation/IAnimation.ts | 0 .../avatar/animation/IAnimationLayerData.ts | 0 .../avatar/animation/IAnimationManager.ts | 2 +- .../avatar/animation/IAvatarDataContainer.ts | 0 .../avatar/animation/ISpriteDataContainer.ts | 0 .../avatar/animation/SpriteDataContainer.ts | 3 +- src/{app => }/avatar/animation/index.ts | 0 .../avatar/cache/AvatarImageActionCache.ts | 2 +- .../avatar/cache/AvatarImageBodyPartCache.ts | 6 +- .../avatar/cache/AvatarImageCache.ts | 56 +- .../avatar/cache/AvatarImageDirectionCache.ts | 6 +- .../avatar/cache/CompleteImageData.ts | 2 +- src/{app => }/avatar/cache/ImageData.ts | 2 +- src/{app => }/avatar/cache/index.ts | 0 .../avatar/data/HabboAvatarAnimations.ts | 0 .../avatar/data/HabboAvatarGeometry.ts | 12 +- .../avatar/data/HabboAvatarPartSets.ts | 0 src/{app => }/avatar/data/index.ts | 0 src/{app => }/avatar/enum/AvatarAction.ts | 0 .../avatar/enum/AvatarDirectionAngle.ts | 0 .../avatar/enum/AvatarFigurePartType.ts | 0 src/{app => }/avatar/enum/AvatarScaleType.ts | 0 src/{app => }/avatar/enum/AvatarSetType.ts | 0 src/{app => }/avatar/enum/GeometryType.ts | 0 src/{app => }/avatar/enum/RenderMode.ts | 0 src/{app => }/avatar/enum/index.ts | 0 .../avatar/geometry/AvatarModelGeometry.ts | 2 +- src/{app => }/avatar/geometry/AvatarSet.ts | 12 +- .../avatar/geometry/GeometryBodyPart.ts | 12 +- src/{app => }/avatar/geometry/GeometryItem.ts | 10 +- src/{app => }/avatar/geometry/Matrix4x4.ts | 20 +- src/{app => }/avatar/geometry/Node3D.ts | 6 +- src/{app => }/avatar/geometry/Vector3D.ts | 0 src/{app => }/avatar/geometry/index.ts | 0 src/{app => }/avatar/index.ts | 5 +- .../interfaces/figuredata/IFigureData.ts | 0 .../interfaces/figuredata/IFigureDataColor.ts | 0 .../figuredata/IFigureDataHiddenLayer.ts | 0 .../figuredata/IFigureDataPalette.ts | 0 .../interfaces/figuredata/IFigureDataPart.ts | 0 .../interfaces/figuredata/IFigureDataSet.ts | 0 .../figuredata/IFigureDataSetType.ts | 0 .../avatar/interfaces/figuredata/index.ts | 0 src/{app => }/avatar/interfaces/index.ts | 0 .../avatar/structure/AvatarAnimationData.ts | 2 +- .../avatar/structure/AvatarCanvas.ts | 2 +- .../avatar/structure/FigureSetData.ts | 2 +- .../avatar/structure/IFigureSetData.ts | 0 .../avatar/structure/IStructureData.ts | 0 .../avatar/structure/PartSetsData.ts | 2 +- .../structure/animation/AnimationAction.ts | 2 +- .../animation/AnimationActionPart.ts | 0 .../animation/AvatarAnimationFrame.ts | 0 .../avatar/structure/animation/index.ts | 0 .../avatar/structure/figure/FigurePart.ts | 0 .../avatar/structure/figure/FigurePartSet.ts | 0 .../avatar/structure/figure/IFigurePart.ts | 0 .../avatar/structure/figure/IFigurePartSet.ts | 0 .../avatar/structure/figure/IPalette.ts | 2 +- .../avatar/structure/figure/IPartColor.ts | 0 .../avatar/structure/figure/ISetType.ts | 2 +- .../avatar/structure/figure/Palette.ts | 2 +- .../avatar/structure/figure/PartColor.ts | 0 .../avatar/structure/figure/SetType.ts | 2 +- .../avatar/structure/figure/index.ts | 0 src/{app => }/avatar/structure/index.ts | 0 .../avatar/structure/parts/ActivePartSet.ts | 0 .../avatar/structure/parts/PartDefinition.ts | 0 src/{app => }/avatar/structure/parts/index.ts | 0 .../ConfigurationManager.ts | 36 +- src/core/INitroCore.ts | 9 - src/core/NitroCore.ts | 50 - src/core/NitroLogger.ts | 31 + src/core/asset/AssetManager.ts | 52 +- src/core/asset/IAssetManager.ts | 16 - src/core/asset/NitroBundle.ts | 2 +- src/core/asset/index.ts | 11 +- .../{utils => interfaces}/IGraphicAsset.ts | 0 .../IGraphicAssetCollection.ts | 4 +- .../asset/interfaces/IGraphicAssetPalette.ts | 9 + src/core/asset/interfaces/index.ts | 9 + src/core/asset/utils/GraphicAsset.ts | 2 +- .../asset/utils/GraphicAssetCollection.ts | 6 +- src/core/asset/utils/GraphicAssetPalette.ts | 3 +- src/core/asset/utils/index.ts | 2 - src/core/common/INitroManager.ts | 10 - src/core/common/NitroManager.ts | 63 - src/core/common/disposable/Disposable.ts | 40 - src/core/common/disposable/IDisposable.ts | 5 - src/core/common/disposable/index.ts | 2 - src/core/common/index.ts | 3 - .../configuration/IConfigurationManager.ts | 8 - src/core/configuration/index.ts | 2 - src/core/index.ts | 19 +- src/core/logger/INitroLogger.ts | 8 - src/core/logger/NitroLogger.ts | 79 - src/core/logger/index.ts | 2 - src/core/utils/AdvancedMap.ts | 24 +- src/core/utils/CanvasUtilities.ts | 22 +- src/core/utils/FileUtilities.ts | 33 +- src/core/utils/Point.ts | 4 +- src/core/utils/Rectangle.ts | 4 +- src/core/utils/Texture.ts | 2 +- src/main.ts | 34 +- .../HttpRouter.ts} | 102 +- src/router/index.ts | 7 + .../utils/BuildFigureOptionsRequest.ts | 2 +- .../utils/BuildFigureOptionsStringRequest.ts | 2 +- .../utils/GetActionRequest.ts | 2 +- .../utils/GetDanceRequest.ts | 2 +- .../utils/GetDirectionRequest.ts | 2 +- .../utils/GetEffectRequest.ts | 2 +- .../utils/GetFigureRequest.ts | 4 +- .../utils/GetFrameNumberRequest.ts | 2 +- .../utils/GetGestureRequest.ts | 2 +- .../utils/GetHeadDirectionRequest.ts | 2 +- .../utils/GetImageFormatRequest.ts | 2 +- .../utils/GetScaleRequest.ts | 4 +- .../utils/GetSetTypeRequest.ts | 4 +- .../utils/GetSizeRequest.ts | 2 +- .../utils/IFigureBuildOptions.ts | 0 .../handlers => router}/utils/RequestQuery.ts | 0 .../utils/action/ProcessActionRequest.ts | 4 +- .../utils/action/ProcessCarryAction.ts | 4 +- .../utils/action/ProcessExpressionAction.ts | 4 +- .../utils/action/ProcessPostureAction.ts | 4 +- .../handlers => router}/utils/action/index.ts | 0 .../utils/dance/ProcessDanceRequest.ts | 4 +- .../handlers => router}/utils/dance/index.ts | 0 .../direction/ProcessDirectionRequest.ts | 4 +- .../utils/direction/index.ts | 0 .../utils/effect/ProcessEffectRequest.ts | 4 +- .../handlers => router}/utils/effect/index.ts | 0 .../utils/gesture/ProcessGestureRequest.ts | 4 +- .../utils/gesture/index.ts | 0 .../handlers => router}/utils/index.ts | 0 tsconfig.json | 8 +- yarn.lock | 2098 +++++++++++ 182 files changed, 2835 insertions(+), 4179 deletions(-) delete mode 100644 .editorconfig create mode 100644 .eslintrc.json delete mode 100644 index.ts delete mode 100644 package-lock.json delete mode 100644 src/app/Application.ts delete mode 100644 src/app/IApplication.ts delete mode 100644 src/app/avatar/PlaceHolderAvatarImage.ts delete mode 100644 src/app/index.ts delete mode 100644 src/app/router/HttpRouter.ts delete mode 100644 src/app/router/habbo-imaging/HabboImagingRouter.ts delete mode 100644 src/app/router/habbo-imaging/handlers/index.ts delete mode 100644 src/app/router/habbo-imaging/index.ts rename src/{app => }/avatar/AvatarAssetDownloadLibrary.ts (77%) rename src/{app => }/avatar/AvatarAssetDownloadManager.ts (86%) rename src/{app => }/avatar/AvatarFigureContainer.ts (93%) rename src/{app => }/avatar/AvatarImage.ts (97%) rename src/{app => }/avatar/AvatarImageBodyPartContainer.ts (80%) rename src/{app => }/avatar/AvatarImagePartContainer.ts (82%) rename src/{app => }/avatar/AvatarRenderManager.ts (75%) rename src/{app => }/avatar/AvatarStructure.ts (95%) rename src/{app => }/avatar/EffectAssetDownloadLibrary.ts (77%) rename src/{app => }/avatar/EffectAssetDownloadManager.ts (82%) rename src/{app => }/avatar/FigureDataContainer.ts (92%) rename src/{app => }/avatar/IAvatarFigureContainer.ts (100%) rename src/{app => }/avatar/IAvatarImage.ts (92%) rename src/{app => }/avatar/IAvatarRenderManager.ts (88%) rename src/{app => }/avatar/actions/ActionDefinition.ts (82%) rename src/{app => }/avatar/actions/ActionType.ts (72%) rename src/{app => }/avatar/actions/ActiveActionData.ts (80%) rename src/{app => }/avatar/actions/AvatarActionManager.ts (92%) rename src/{app => }/avatar/actions/IActionDefinition.ts (100%) rename src/{app => }/avatar/actions/IActiveActionData.ts (100%) rename src/{app => }/avatar/actions/index.ts (100%) rename src/{app => }/avatar/alias/AssetAlias.ts (83%) rename src/{app => }/avatar/alias/AssetAliasCollection.ts (79%) rename src/{app => }/avatar/alias/index.ts (100%) rename src/{app => }/avatar/animation/AddDataContainer.ts (95%) rename src/{app => }/avatar/animation/Animation.ts (99%) rename src/{app => }/avatar/animation/AnimationManager.ts (95%) rename src/{app => }/avatar/animation/AvatarAnimationLayerData.ts (99%) rename src/{app => }/avatar/animation/AvatarDataContainer.ts (98%) rename src/{app => }/avatar/animation/DirectionDataContainer.ts (80%) rename src/{app => }/avatar/animation/IAnimation.ts (100%) rename src/{app => }/avatar/animation/IAnimationLayerData.ts (100%) rename src/{app => }/avatar/animation/IAnimationManager.ts (87%) rename src/{app => }/avatar/animation/IAvatarDataContainer.ts (100%) rename src/{app => }/avatar/animation/ISpriteDataContainer.ts (100%) rename src/{app => }/avatar/animation/SpriteDataContainer.ts (96%) rename src/{app => }/avatar/animation/index.ts (100%) rename src/{app => }/avatar/cache/AvatarImageActionCache.ts (96%) rename src/{app => }/avatar/cache/AvatarImageBodyPartCache.ts (94%) rename src/{app => }/avatar/cache/AvatarImageCache.ts (89%) rename src/{app => }/avatar/cache/AvatarImageDirectionCache.ts (91%) rename src/{app => }/avatar/cache/CompleteImageData.ts (96%) rename src/{app => }/avatar/cache/ImageData.ts (95%) rename src/{app => }/avatar/cache/index.ts (100%) rename src/{app => }/avatar/data/HabboAvatarAnimations.ts (100%) rename src/{app => }/avatar/data/HabboAvatarGeometry.ts (99%) rename src/{app => }/avatar/data/HabboAvatarPartSets.ts (100%) rename src/{app => }/avatar/data/index.ts (100%) rename src/{app => }/avatar/enum/AvatarAction.ts (100%) rename src/{app => }/avatar/enum/AvatarDirectionAngle.ts (100%) rename src/{app => }/avatar/enum/AvatarFigurePartType.ts (100%) rename src/{app => }/avatar/enum/AvatarScaleType.ts (100%) rename src/{app => }/avatar/enum/AvatarSetType.ts (100%) rename src/{app => }/avatar/enum/GeometryType.ts (100%) rename src/{app => }/avatar/enum/RenderMode.ts (100%) rename src/{app => }/avatar/enum/index.ts (100%) rename src/{app => }/avatar/geometry/AvatarModelGeometry.ts (99%) rename src/{app => }/avatar/geometry/AvatarSet.ts (88%) rename src/{app => }/avatar/geometry/GeometryBodyPart.ts (93%) rename src/{app => }/avatar/geometry/GeometryItem.ts (80%) rename src/{app => }/avatar/geometry/Matrix4x4.ts (77%) rename src/{app => }/avatar/geometry/Node3D.ts (81%) rename src/{app => }/avatar/geometry/Vector3D.ts (100%) rename src/{app => }/avatar/geometry/index.ts (100%) rename src/{app => }/avatar/index.ts (84%) rename src/{app => }/avatar/interfaces/figuredata/IFigureData.ts (100%) rename src/{app => }/avatar/interfaces/figuredata/IFigureDataColor.ts (100%) rename src/{app => }/avatar/interfaces/figuredata/IFigureDataHiddenLayer.ts (100%) rename src/{app => }/avatar/interfaces/figuredata/IFigureDataPalette.ts (100%) rename src/{app => }/avatar/interfaces/figuredata/IFigureDataPart.ts (100%) rename src/{app => }/avatar/interfaces/figuredata/IFigureDataSet.ts (100%) rename src/{app => }/avatar/interfaces/figuredata/IFigureDataSetType.ts (100%) rename src/{app => }/avatar/interfaces/figuredata/index.ts (100%) rename src/{app => }/avatar/interfaces/index.ts (100%) rename src/{app => }/avatar/structure/AvatarAnimationData.ts (96%) rename src/{app => }/avatar/structure/AvatarCanvas.ts (95%) rename src/{app => }/avatar/structure/FigureSetData.ts (98%) rename src/{app => }/avatar/structure/IFigureSetData.ts (100%) rename src/{app => }/avatar/structure/IStructureData.ts (100%) rename src/{app => }/avatar/structure/PartSetsData.ts (98%) rename src/{app => }/avatar/structure/animation/AnimationAction.ts (98%) rename src/{app => }/avatar/structure/animation/AnimationActionPart.ts (100%) rename src/{app => }/avatar/structure/animation/AvatarAnimationFrame.ts (100%) rename src/{app => }/avatar/structure/animation/index.ts (100%) rename src/{app => }/avatar/structure/figure/FigurePart.ts (100%) rename src/{app => }/avatar/structure/figure/FigurePartSet.ts (100%) rename src/{app => }/avatar/structure/figure/IFigurePart.ts (100%) rename src/{app => }/avatar/structure/figure/IFigurePartSet.ts (100%) rename src/{app => }/avatar/structure/figure/IPalette.ts (78%) rename src/{app => }/avatar/structure/figure/IPartColor.ts (100%) rename src/{app => }/avatar/structure/figure/ISetType.ts (87%) rename src/{app => }/avatar/structure/figure/Palette.ts (95%) rename src/{app => }/avatar/structure/figure/PartColor.ts (100%) rename src/{app => }/avatar/structure/figure/SetType.ts (98%) rename src/{app => }/avatar/structure/figure/index.ts (100%) rename src/{app => }/avatar/structure/index.ts (100%) rename src/{app => }/avatar/structure/parts/ActivePartSet.ts (100%) rename src/{app => }/avatar/structure/parts/PartDefinition.ts (100%) rename src/{app => }/avatar/structure/parts/index.ts (100%) rename src/core/{configuration => }/ConfigurationManager.ts (65%) delete mode 100644 src/core/INitroCore.ts delete mode 100644 src/core/NitroCore.ts create mode 100644 src/core/NitroLogger.ts delete mode 100644 src/core/asset/IAssetManager.ts rename src/core/asset/{utils => interfaces}/IGraphicAsset.ts (100%) rename src/core/asset/{utils => interfaces}/IGraphicAssetCollection.ts (82%) create mode 100644 src/core/asset/interfaces/IGraphicAssetPalette.ts delete mode 100644 src/core/common/INitroManager.ts delete mode 100644 src/core/common/NitroManager.ts delete mode 100644 src/core/common/disposable/Disposable.ts delete mode 100644 src/core/common/disposable/IDisposable.ts delete mode 100644 src/core/common/disposable/index.ts delete mode 100644 src/core/common/index.ts delete mode 100644 src/core/configuration/IConfigurationManager.ts delete mode 100644 src/core/configuration/index.ts delete mode 100644 src/core/logger/INitroLogger.ts delete mode 100644 src/core/logger/NitroLogger.ts delete mode 100644 src/core/logger/index.ts rename src/{app/router/habbo-imaging/handlers/HabboImagingRouterGet.ts => router/HttpRouter.ts} (64%) create mode 100644 src/router/index.ts rename src/{app/router/habbo-imaging/handlers => router}/utils/BuildFigureOptionsRequest.ts (99%) rename src/{app/router/habbo-imaging/handlers => router}/utils/BuildFigureOptionsStringRequest.ts (99%) rename src/{app/router/habbo-imaging/handlers => router}/utils/GetActionRequest.ts (98%) rename src/{app/router/habbo-imaging/handlers => router}/utils/GetDanceRequest.ts (98%) rename src/{app/router/habbo-imaging/handlers => router}/utils/GetDirectionRequest.ts (98%) rename src/{app/router/habbo-imaging/handlers => router}/utils/GetEffectRequest.ts (98%) rename src/{app/router/habbo-imaging/handlers => router}/utils/GetFigureRequest.ts (80%) rename src/{app/router/habbo-imaging/handlers => router}/utils/GetFrameNumberRequest.ts (98%) rename src/{app/router/habbo-imaging/handlers => router}/utils/GetGestureRequest.ts (98%) rename src/{app/router/habbo-imaging/handlers => router}/utils/GetHeadDirectionRequest.ts (98%) rename src/{app/router/habbo-imaging/handlers => router}/utils/GetImageFormatRequest.ts (98%) rename src/{app/router/habbo-imaging/handlers => router}/utils/GetScaleRequest.ts (71%) rename src/{app/router/habbo-imaging/handlers => router}/utils/GetSetTypeRequest.ts (82%) rename src/{app/router/habbo-imaging/handlers => router}/utils/GetSizeRequest.ts (98%) rename src/{app/router/habbo-imaging/handlers => router}/utils/IFigureBuildOptions.ts (100%) rename src/{app/router/habbo-imaging/handlers => router}/utils/RequestQuery.ts (100%) rename src/{app/router/habbo-imaging/handlers => router}/utils/action/ProcessActionRequest.ts (92%) rename src/{app/router/habbo-imaging/handlers => router}/utils/action/ProcessCarryAction.ts (92%) rename src/{app/router/habbo-imaging/handlers => router}/utils/action/ProcessExpressionAction.ts (94%) rename src/{app/router/habbo-imaging/handlers => router}/utils/action/ProcessPostureAction.ts (92%) rename src/{app/router/habbo-imaging/handlers => router}/utils/action/index.ts (100%) rename src/{app/router/habbo-imaging/handlers => router}/utils/dance/ProcessDanceRequest.ts (86%) rename src/{app/router/habbo-imaging/handlers => router}/utils/dance/index.ts (100%) rename src/{app/router/habbo-imaging/handlers => router}/utils/direction/ProcessDirectionRequest.ts (87%) rename src/{app/router/habbo-imaging/handlers => router}/utils/direction/index.ts (100%) rename src/{app/router/habbo-imaging/handlers => router}/utils/effect/ProcessEffectRequest.ts (82%) rename src/{app/router/habbo-imaging/handlers => router}/utils/effect/index.ts (100%) rename src/{app/router/habbo-imaging/handlers => router}/utils/gesture/ProcessGestureRequest.ts (91%) rename src/{app/router/habbo-imaging/handlers => router}/utils/gesture/index.ts (100%) rename src/{app/router/habbo-imaging/handlers => router}/utils/index.ts (100%) create mode 100644 yarn.lock diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 0792692..0000000 --- a/.editorconfig +++ /dev/null @@ -1,16 +0,0 @@ -# Editor configuration, see https://editorconfig.org -root = true - -[*] -charset = utf-8 -indent_style = space -indent_size = 4 -insert_final_newline = true -trim_trailing_whitespace = true - -[*.ts] -quote_type = single - -[*.md] -max_line_length = off -trim_trailing_whitespace = false diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..23546cf --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,135 @@ +{ + "env": { + "browser": true, + "es2021": true, + "node": true + }, + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": 12, + "sourceType": "module" + }, + "plugins": [ + "@typescript-eslint" + ], + "rules": { + "indent": [ + "error", + 4, + { + "SwitchCase": 1 + } + ], + "no-multi-spaces": [ + "error" + ], + "no-trailing-spaces": [ + "error", + { + "skipBlankLines": false, + "ignoreComments": true + } + ], + "linebreak-style": [ + "off" + ], + "quotes": [ + "error", + "single" + ], + "semi": [ + "error", + "always" + ], + "brace-style": [ + "error", + "allman" + ], + "object-curly-spacing": [ + "error", + "always" + ], + "keyword-spacing": [ + "error", + { + "overrides": + { + "if": + { + "after": false + }, + "for": + { + "after": false + }, + "while": + { + "after": false + }, + "switch": + { + "after": false + } + } + } + ], + "@typescript-eslint/no-explicit-any": [ + "off" + ], + "@typescript-eslint/explicit-module-boundary-types": [ + "off", + { + "allowedNames": [ + "getMessageArray" + ] + } + ], + "@typescript-eslint/ban-ts-comment": [ + "off" + ], + "@typescript-eslint/no-empty-function": [ + "error", + { + "allow": [ + "functions", + "arrowFunctions", + "generatorFunctions", + "methods", + "generatorMethods", + "constructors" + ] + } + ], + "@typescript-eslint/no-unused-vars": [ + "off" + ], + "@typescript-eslint/no-inferrable-types": [ + "error", + { + "ignoreParameters": true, + "ignoreProperties": true + } + ], + "@typescript-eslint/ban-types": [ + "error", + { + "types": + { + "String": true, + "Boolean": true, + "Number": true, + "Symbol": true, + "{}": false, + "Object": false, + "object": false, + "Function": false + }, + "extendDefaults": true + } + ] + } +} diff --git a/.vscode/settings.json b/.vscode/settings.json index 7b328b8..b2d809f 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,13 +4,27 @@ "typescript.preferences.quoteStyle": "single", "typescript.format.placeOpenBraceOnNewLineForControlBlocks": true, "typescript.format.placeOpenBraceOnNewLineForFunctions": true, + "editor.wordWrap": "on", "editor.codeActionsOnSave": { - "source.fixAll": true, - "source.organizeImports": true, + "source.fixAll.eslint": true, + "source.fixAll.sortJSON": false, + "source.organizeImports": true }, - "emmet.showExpandedAbbreviation": "never", - "git.ignoreLimitWarning": true, + "editor.formatOnSave": false, + "git.ignoreLimitWarning": true, "files.eol": "\n", "files.insertFinalNewline": true, - "files.trimFinalNewlines": true + "files.trimFinalNewlines": true, + "emmet.showExpandedAbbreviation": "never", + "eslint.format.enable": true, + "eslint.validate": [ + "javascript", + "typescript" + ], + "eslint.workingDirectories": [ + { + "pattern": "./src/*" + } + ], + "javascript.format.enable": false } diff --git a/index.ts b/index.ts deleted file mode 100644 index 935c176..0000000 --- a/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -require('dotenv').config(); -require('./src/main'); diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index a8e2b39..0000000 --- a/package-lock.json +++ /dev/null @@ -1,3208 +0,0 @@ -{ - "name": "nitro-imager", - "version": "1.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "nitro-imager", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "bytebuffer": "^5.0.1", - "canvas": "^2.8.0", - "chalk": "^4.1.2", - "dotenv": "^10.0.0", - "express": "^4.17.1", - "gifencoder": "^2.0.1", - "node-fetch": "^2.6.1", - "pako": "^2.0.4" - }, - "devDependencies": { - "@types/bytebuffer": "^5.0.42", - "@types/chalk": "^2.2.0", - "@types/express": "^4.17.13", - "@types/gifencoder": "^2.0.1", - "@types/node": "^14.17.12", - "@types/node-fetch": "^2.5.12", - "@types/pako": "^1.0.2", - "ts-node-dev": "^1.1.8", - "typescript": "^4.4.2" - } - }, - "node_modules/@mapbox/node-pre-gyp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.5.tgz", - "integrity": "sha512-4srsKPXWlIxp5Vbqz5uLfBN+du2fJChBoYn/f2h991WLdk7jUvcSk/McVLSv/X+xQIPI8eGD5GjrnygdyHnhPA==", - "dependencies": { - "detect-libc": "^1.0.3", - "https-proxy-agent": "^5.0.0", - "make-dir": "^3.1.0", - "node-fetch": "^2.6.1", - "nopt": "^5.0.0", - "npmlog": "^4.1.2", - "rimraf": "^3.0.2", - "semver": "^7.3.4", - "tar": "^6.1.0" - }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.1.tgz", - "integrity": "sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg==", - "dev": true, - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/bytebuffer": { - "version": "5.0.42", - "resolved": "https://registry.npmjs.org/@types/bytebuffer/-/bytebuffer-5.0.42.tgz", - "integrity": "sha512-lEgKojWUAc/MG2t649oZS5AfYFP2xRNPoDuwDBlBMjHXd8MaGPgFgtCXUK7inZdBOygmVf10qxc1Us8GXC96aw==", - "dev": true, - "dependencies": { - "@types/long": "*", - "@types/node": "*" - } - }, - "node_modules/@types/chalk": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@types/chalk/-/chalk-2.2.0.tgz", - "integrity": "sha512-1zzPV9FDe1I/WHhRkf9SNgqtRJWZqrBWgu7JGveuHmmyR9CnAPCie2N/x+iHrgnpYBIcCJWHBoMRv2TRWktsvw==", - "deprecated": "This is a stub types definition for chalk (https://github.com/chalk/chalk). chalk provides its own type definitions, so you don't need @types/chalk installed!", - "dev": true, - "dependencies": { - "chalk": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", - "dev": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.24", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz", - "integrity": "sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "node_modules/@types/gifencoder": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/gifencoder/-/gifencoder-2.0.1.tgz", - "integrity": "sha512-Ls78JLiLPHA1ytIXMWv/7/71a2Cz7BBnjgi9R/LFcIS531PEFYxPPGHNmBBnLekQ7/VpO+n1fgaJ6XD3ZkpApg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/long": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", - "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==", - "dev": true - }, - "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true - }, - "node_modules/@types/node": { - "version": "14.17.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.12.tgz", - "integrity": "sha512-vhUqgjJR1qxwTWV5Ps5txuy2XMdf7Fw+OrdChRboy8BmWUPkckOhphaohzFG6b8DW7CrxaBMdrdJ47SYFq1okw==", - "dev": true - }, - "node_modules/@types/node-fetch": { - "version": "2.5.12", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz", - "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==", - "dev": true, - "dependencies": { - "@types/node": "*", - "form-data": "^3.0.0" - } - }, - "node_modules/@types/pako": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/pako/-/pako-1.0.2.tgz", - "integrity": "sha512-8UJl2MjkqqS6ncpLZqRZ5LmGiFBkbYxocD4e4jmBqGvfRG1RS23gKsBQbdtV9O9GvRyjFTiRHRByjSlKCLlmZw==", - "dev": true - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true - }, - "node_modules/@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", - "dev": true, - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I=", - "dev": true - }, - "node_modules/@types/strip-json-comments": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", - "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", - "dev": true - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "node_modules/accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "dependencies": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/agent-base/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/agent-base/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==" - }, - "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "node_modules/are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "dependencies": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "engines": { - "node": ">= 0.8" - } - }, - "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==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/bytebuffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", - "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=", - "dependencies": { - "long": "~3" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/canvas": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.8.0.tgz", - "integrity": "sha512-gLTi17X8WY9Cf5GZ2Yns8T5lfBOcGgFehDFb+JQwDqdOoBOcECS9ZWMEAqMSVcMYwXD659J8NyzjRY/2aE+C2Q==", - "hasInstallScript": true, - "dependencies": { - "@mapbox/node-pre-gyp": "^1.0.0", - "nan": "^2.14.0", - "simple-get": "^3.0.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", - "dev": true, - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "engines": { - "node": ">=10" - } - }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" - }, - "node_modules/content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/decompress-response": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", - "dependencies": { - "mimic-response": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" - }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "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/dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", - "engines": { - "node": ">=10" - } - }, - "node_modules/dynamic-dedupe": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz", - "integrity": "sha1-BuRMIj9eTpTXjvnbI6ZRXOL5YqE=", - "dev": true, - "dependencies": { - "xtend": "^4.0.0" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "dependencies": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "node_modules/gifencoder": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/gifencoder/-/gifencoder-2.0.1.tgz", - "integrity": "sha512-x19DcyWY10SkshBpokqFOo/HBht9GB75evRYvaLMbez9p+yB/o+kt0fK9AwW59nFiAMs2UUQsjv1lX/hvu9Ong==", - "dependencies": { - "canvas": "^2.2.0" - } - }, - "node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" - }, - "node_modules/http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/https-proxy-agent/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==" - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-core-module": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", - "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "node_modules/long": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", - "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=", - "engines": { - "node": ">=0.6" - } - }, - "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==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "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==", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", - "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.32", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", - "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", - "dependencies": { - "mime-db": "1.49.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/nan": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", - "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==" - }, - "node_modules/negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "engines": { - "node": ">=0.10.0" - } - }, - "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=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/pako": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pako/-/pako-2.0.4.tgz", - "integrity": "sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg==" - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/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/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, - "node_modules/serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "node_modules/signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "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/simple-get": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", - "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", - "dependencies": { - "decompress-response": "^4.2.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-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==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/ts-node": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", - "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", - "dev": true, - "dependencies": { - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "source-map-support": "^0.5.17", - "yn": "3.1.1" - }, - "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" - } - }, - "node_modules/ts-node-dev": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ts-node-dev/-/ts-node-dev-1.1.8.tgz", - "integrity": "sha512-Q/m3vEwzYwLZKmV6/0VlFxcZzVV/xcgOt+Tx/VjaaRHyiBcFlV0541yrT09QjzzCxlDZ34OzKjrFAynlmtflEg==", - "dev": true, - "dependencies": { - "chokidar": "^3.5.1", - "dynamic-dedupe": "^0.3.0", - "minimist": "^1.2.5", - "mkdirp": "^1.0.4", - "resolve": "^1.0.0", - "rimraf": "^2.6.1", - "source-map-support": "^0.5.12", - "tree-kill": "^1.2.2", - "ts-node": "^9.0.0", - "tsconfig": "^7.0.0" - }, - "bin": { - "ts-node-dev": "lib/bin.js", - "tsnd": "lib/bin.js" - }, - "engines": { - "node": ">=0.8.0" - }, - "peerDependencies": { - "node-notifier": "*", - "typescript": "*" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/ts-node-dev/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/tsconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", - "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", - "dev": true, - "dependencies": { - "@types/strip-bom": "^3.0.0", - "@types/strip-json-comments": "0.0.30", - "strip-bom": "^3.0.0", - "strip-json-comments": "^2.0.0" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typescript": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.2.tgz", - "integrity": "sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dependencies": { - "string-width": "^1.0.2 || 2" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "engines": { - "node": ">=6" - } - } - }, - "dependencies": { - "@mapbox/node-pre-gyp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.5.tgz", - "integrity": "sha512-4srsKPXWlIxp5Vbqz5uLfBN+du2fJChBoYn/f2h991WLdk7jUvcSk/McVLSv/X+xQIPI8eGD5GjrnygdyHnhPA==", - "requires": { - "detect-libc": "^1.0.3", - "https-proxy-agent": "^5.0.0", - "make-dir": "^3.1.0", - "node-fetch": "^2.6.1", - "nopt": "^5.0.0", - "npmlog": "^4.1.2", - "rimraf": "^3.0.2", - "semver": "^7.3.4", - "tar": "^6.1.0" - } - }, - "@types/body-parser": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.1.tgz", - "integrity": "sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg==", - "dev": true, - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/bytebuffer": { - "version": "5.0.42", - "resolved": "https://registry.npmjs.org/@types/bytebuffer/-/bytebuffer-5.0.42.tgz", - "integrity": "sha512-lEgKojWUAc/MG2t649oZS5AfYFP2xRNPoDuwDBlBMjHXd8MaGPgFgtCXUK7inZdBOygmVf10qxc1Us8GXC96aw==", - "dev": true, - "requires": { - "@types/long": "*", - "@types/node": "*" - } - }, - "@types/chalk": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@types/chalk/-/chalk-2.2.0.tgz", - "integrity": "sha512-1zzPV9FDe1I/WHhRkf9SNgqtRJWZqrBWgu7JGveuHmmyR9CnAPCie2N/x+iHrgnpYBIcCJWHBoMRv2TRWktsvw==", - "dev": true, - "requires": { - "chalk": "*" - } - }, - "@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", - "dev": true, - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.24", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz", - "integrity": "sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "@types/gifencoder": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/gifencoder/-/gifencoder-2.0.1.tgz", - "integrity": "sha512-Ls78JLiLPHA1ytIXMWv/7/71a2Cz7BBnjgi9R/LFcIS531PEFYxPPGHNmBBnLekQ7/VpO+n1fgaJ6XD3ZkpApg==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/long": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", - "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==", - "dev": true - }, - "@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true - }, - "@types/node": { - "version": "14.17.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.12.tgz", - "integrity": "sha512-vhUqgjJR1qxwTWV5Ps5txuy2XMdf7Fw+OrdChRboy8BmWUPkckOhphaohzFG6b8DW7CrxaBMdrdJ47SYFq1okw==", - "dev": true - }, - "@types/node-fetch": { - "version": "2.5.12", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz", - "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==", - "dev": true, - "requires": { - "@types/node": "*", - "form-data": "^3.0.0" - } - }, - "@types/pako": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/pako/-/pako-1.0.2.tgz", - "integrity": "sha512-8UJl2MjkqqS6ncpLZqRZ5LmGiFBkbYxocD4e4jmBqGvfRG1RS23gKsBQbdtV9O9GvRyjFTiRHRByjSlKCLlmZw==", - "dev": true - }, - "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true - }, - "@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", - "dev": true, - "requires": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "@types/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I=", - "dev": true - }, - "@types/strip-json-comments": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", - "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "requires": { - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "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 - }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "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": { - "fill-range": "^7.0.1" - } - }, - "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 - }, - "bytebuffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", - "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=", - "requires": { - "long": "~3" - } - }, - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, - "canvas": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.8.0.tgz", - "integrity": "sha512-gLTi17X8WY9Cf5GZ2Yns8T5lfBOcGgFehDFb+JQwDqdOoBOcECS9ZWMEAqMSVcMYwXD659J8NyzjRY/2aE+C2Q==", - "requires": { - "@mapbox/node-pre-gyp": "^1.0.0", - "nan": "^2.14.0", - "simple-get": "^3.0.3" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "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==", - "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==" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" - }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "requires": { - "safe-buffer": "5.1.2" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "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 - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "decompress-response": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", - "requires": { - "mimic-response": "^2.0.0" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" - }, - "dynamic-dedupe": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz", - "integrity": "sha1-BuRMIj9eTpTXjvnbI6ZRXOL5YqE=", - "dev": true, - "requires": { - "xtend": "^4.0.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - } - }, - "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": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - } - }, - "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "requires": { - "minipass": "^3.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "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 - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "gifencoder": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/gifencoder/-/gifencoder-2.0.1.tgz", - "integrity": "sha512-x19DcyWY10SkshBpokqFOo/HBht9GB75evRYvaLMbez9p+yB/o+kt0fK9AwW59nFiAMs2UUQsjv1lX/hvu9Ong==", - "requires": { - "canvas": "^2.2.0" - } - }, - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "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" - } - }, - "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": { - "is-glob": "^4.0.1" - } - }, - "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": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" - }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "requires": { - "agent-base": "6", - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - }, - "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": { - "binary-extensions": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", - "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "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": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.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==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "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 - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "long": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", - "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=" - }, - "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==", - "requires": { - "yallist": "^4.0.0" - } - }, - "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==", - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "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 - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", - "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==" - }, - "mime-types": { - "version": "2.1.32", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", - "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", - "requires": { - "mime-db": "1.49.0" - } - }, - "mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==" - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", - "requires": { - "yallist": "^4.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "nan": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", - "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==" - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" - }, - "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" - }, - "nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "requires": { - "abbrev": "1" - } - }, - "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 - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "pako": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pako/-/pako-2.0.4.tgz", - "integrity": "sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg==" - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "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=" - }, - "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-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - } - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - }, - "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==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" - }, - "simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" - }, - "simple-get": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", - "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", - "requires": { - "decompress-response": "^4.2.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "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-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==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "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-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "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==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - }, - "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": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - }, - "tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true - }, - "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": { - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "source-map-support": "^0.5.17", - "yn": "3.1.1" - } - }, - "ts-node-dev": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ts-node-dev/-/ts-node-dev-1.1.8.tgz", - "integrity": "sha512-Q/m3vEwzYwLZKmV6/0VlFxcZzVV/xcgOt+Tx/VjaaRHyiBcFlV0541yrT09QjzzCxlDZ34OzKjrFAynlmtflEg==", - "dev": true, - "requires": { - "chokidar": "^3.5.1", - "dynamic-dedupe": "^0.3.0", - "minimist": "^1.2.5", - "mkdirp": "^1.0.4", - "resolve": "^1.0.0", - "rimraf": "^2.6.1", - "source-map-support": "^0.5.12", - "tree-kill": "^1.2.2", - "ts-node": "^9.0.0", - "tsconfig": "^7.0.0" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "tsconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", - "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", - "dev": true, - "requires": { - "@types/strip-bom": "^3.0.0", - "@types/strip-json-comments": "0.0.30", - "strip-bom": "^3.0.0", - "strip-json-comments": "^2.0.0" - } - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typescript": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.2.tgz", - "integrity": "sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true - } - } -} diff --git a/package.json b/package.json index ca0bc50..158c717 100644 --- a/package.json +++ b/package.json @@ -5,24 +5,26 @@ "main": "index.ts", "dependencies": { "bytebuffer": "^5.0.1", - "canvas": "^2.8.0", - "chalk": "^4.1.2", - "dotenv": "^10.0.0", - "express": "^4.17.1", + "canvas": "^2.10.2", + "cli-color": "^2.0.3", + "dotenv": "^16.0.3", + "express": "^4.18.2", "gifencoder": "^2.0.1", - "node-fetch": "^2.6.1", - "pako": "^2.0.4" + "node-fetch": "^2.0.0", + "pako": "^2.1.0" }, "devDependencies": { - "@types/bytebuffer": "^5.0.42", - "@types/chalk": "^2.2.0", - "@types/express": "^4.17.13", + "@types/bytebuffer": "^5.0.44", + "@types/cli-color": "^2.0.2", + "@types/express": "^4.17.15", "@types/gifencoder": "^2.0.1", - "@types/node": "^14.17.12", - "@types/node-fetch": "^2.5.12", - "@types/pako": "^1.0.2", - "ts-node-dev": "^1.1.8", - "typescript": "^4.4.2" + "@types/node": "^18.11.15", + "@types/pako": "^2.0.0", + "@typescript-eslint/eslint-plugin": "^5.46.1", + "@typescript-eslint/parser": "^5.46.1", + "eslint": "^8.29.0", + "ts-node-dev": "^2.0.0", + "typescript": "^4.9.4" }, "scripts": { "build": "tsc", diff --git a/src/app/Application.ts b/src/app/Application.ts deleted file mode 100644 index 8eb658f..0000000 --- a/src/app/Application.ts +++ /dev/null @@ -1,76 +0,0 @@ -import * as express from 'express'; -import { INitroCore, NitroManager } from '../core'; -import { AvatarRenderManager, IAvatarRenderManager } from './avatar'; -import { IApplication } from './IApplication'; -import { HttpRouter } from './router/HttpRouter'; - -export class Application extends NitroManager implements IApplication -{ - private static INSTANCE: IApplication = null; - - private _core: INitroCore; - private _avatar: IAvatarRenderManager; - - constructor(core: INitroCore) - { - super(); - - Application.INSTANCE = this; - - this._core = core; - this._avatar = new AvatarRenderManager(core.asset); - } - - protected async onInit(): Promise - { - if(this._core) await this._core.init(); - - if(this._avatar) await this._avatar.init(); - - this.setupRouter(); - - this.logger.log(`Initialized`); - } - - protected async onDispose(): Promise - { - if(this._avatar) await this._avatar.dispose(); - - if(this._core) await this._core.dispose(); - } - - public getConfiguration(key: string, value: T = null): T - { - return this._core.configuration.getValue(key, value); - } - - private setupRouter(): void - { - const router = express(); - - router.use('/', HttpRouter); - - const host = (process.env.API_HOST as string); - const port = parseInt(process.env.API_PORT); - - router.listen(port, host, () => - { - this.logger.log(`Server Started ${ host }:${ port }`); - }); - } - - public get core(): INitroCore - { - return this._core; - } - - public get avatar(): IAvatarRenderManager - { - return this._avatar; - } - - public static get instance(): IApplication - { - return this.INSTANCE; - } -} diff --git a/src/app/IApplication.ts b/src/app/IApplication.ts deleted file mode 100644 index 8a44642..0000000 --- a/src/app/IApplication.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { INitroCore, INitroManager } from '../core'; -import { IAvatarRenderManager } from './avatar'; - -export interface IApplication extends INitroManager -{ - getConfiguration(key: string, value?: T): T; - core: INitroCore; - avatar: IAvatarRenderManager; -} diff --git a/src/app/avatar/PlaceHolderAvatarImage.ts b/src/app/avatar/PlaceHolderAvatarImage.ts deleted file mode 100644 index d9d5144..0000000 --- a/src/app/avatar/PlaceHolderAvatarImage.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { AssetAliasCollection } from './alias'; -import { AvatarFigureContainer } from './AvatarFigureContainer'; -import { AvatarImage } from './AvatarImage'; -import { AvatarStructure } from './AvatarStructure'; -import { EffectAssetDownloadManager } from './EffectAssetDownloadManager'; - -export class PlaceHolderAvatarImage extends AvatarImage -{ - constructor(k: AvatarStructure, _arg_2: AssetAliasCollection, _arg_3: AvatarFigureContainer, _arg_4: string, _arg_5: EffectAssetDownloadManager) - { - super(k, _arg_2, _arg_3, _arg_4, _arg_5); - } - - public isPlaceholder(): boolean - { - return true; - } -} diff --git a/src/app/index.ts b/src/app/index.ts deleted file mode 100644 index 13f65e1..0000000 --- a/src/app/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './Application'; -export * from './avatar'; -export * from './IApplication'; diff --git a/src/app/router/HttpRouter.ts b/src/app/router/HttpRouter.ts deleted file mode 100644 index 4166323..0000000 --- a/src/app/router/HttpRouter.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { Router } from 'express'; -import { HabboImagingRouter } from './habbo-imaging'; - -export const HttpRouter = Router(); - -HttpRouter.use('/', HabboImagingRouter); diff --git a/src/app/router/habbo-imaging/HabboImagingRouter.ts b/src/app/router/habbo-imaging/HabboImagingRouter.ts deleted file mode 100644 index fa3883f..0000000 --- a/src/app/router/habbo-imaging/HabboImagingRouter.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { Router } from 'express'; -import { HabboImagingRouterGet } from './handlers'; - -export const HabboImagingRouter = Router(); - -HabboImagingRouter.get('/', HabboImagingRouterGet); diff --git a/src/app/router/habbo-imaging/handlers/index.ts b/src/app/router/habbo-imaging/handlers/index.ts deleted file mode 100644 index d60024d..0000000 --- a/src/app/router/habbo-imaging/handlers/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './HabboImagingRouterGet'; diff --git a/src/app/router/habbo-imaging/index.ts b/src/app/router/habbo-imaging/index.ts deleted file mode 100644 index cca7206..0000000 --- a/src/app/router/habbo-imaging/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './HabboImagingRouter'; diff --git a/src/app/avatar/AvatarAssetDownloadLibrary.ts b/src/avatar/AvatarAssetDownloadLibrary.ts similarity index 77% rename from src/app/avatar/AvatarAssetDownloadLibrary.ts rename to src/avatar/AvatarAssetDownloadLibrary.ts index 8efe003..b940be7 100644 --- a/src/app/avatar/AvatarAssetDownloadLibrary.ts +++ b/src/avatar/AvatarAssetDownloadLibrary.ts @@ -1,4 +1,4 @@ -import { IAssetManager } from '../../core'; +import { AssetManager } from '../core'; export class AvatarAssetDownloadLibrary { @@ -10,15 +10,13 @@ export class AvatarAssetDownloadLibrary private _libraryName: string; private _revision: string; private _downloadUrl: string; - private _assets: IAssetManager; - constructor(id: string, revision: string, assets: IAssetManager, assetUrl: string) + constructor(id: string, revision: string, assetUrl: string) { this._state = AvatarAssetDownloadLibrary.NOT_LOADED; this._libraryName = id; this._revision = revision; this._downloadUrl = assetUrl; - this._assets = assets; this._downloadUrl = this._downloadUrl.replace(/%libname%/gi, this._libraryName); this._downloadUrl = this._downloadUrl.replace(/%revision%/gi, this._revision); @@ -30,7 +28,7 @@ export class AvatarAssetDownloadLibrary { if(this._state === AvatarAssetDownloadLibrary.LOADED) return true; - const asset = this._assets.getCollection(this._libraryName); + const asset = AssetManager.getCollection(this._libraryName); if(asset) { @@ -44,13 +42,13 @@ export class AvatarAssetDownloadLibrary public async downloadAsset(): Promise { - if(!this._assets || (this._state === AvatarAssetDownloadLibrary.LOADING)) return false; + if(this._state === AvatarAssetDownloadLibrary.LOADING) return false; if(this.checkIfAssetLoaded()) return false; this._state = AvatarAssetDownloadLibrary.LOADING; - if(!await this._assets.downloadAsset(this._downloadUrl)) return false; + if(!await AssetManager.downloadAsset(this._downloadUrl)) return false; this._state = AvatarAssetDownloadLibrary.LOADED; diff --git a/src/app/avatar/AvatarAssetDownloadManager.ts b/src/avatar/AvatarAssetDownloadManager.ts similarity index 86% rename from src/app/avatar/AvatarAssetDownloadManager.ts rename to src/avatar/AvatarAssetDownloadManager.ts index b966b1e..197f1a4 100644 --- a/src/app/avatar/AvatarAssetDownloadManager.ts +++ b/src/avatar/AvatarAssetDownloadManager.ts @@ -1,33 +1,28 @@ -import { AdvancedMap, FileUtilities, IAssetManager } from '../../core'; -import { Application } from '../Application'; +import { AdvancedMap, ConfigurationManager, FileUtilities } from '../core'; import { AvatarAssetDownloadLibrary } from './AvatarAssetDownloadLibrary'; import { AvatarStructure } from './AvatarStructure'; import { IAvatarFigureContainer } from './IAvatarFigureContainer'; export class AvatarAssetDownloadManager { - private _assets: IAssetManager; private _structure: AvatarStructure; - private _missingMandatoryLibs: string[]; - private _figureMap: AdvancedMap; - private _libraryNames: string[]; + private _missingMandatoryLibs: string[] = []; + private _figureMap: AdvancedMap = new AdvancedMap(); + private _libraryNames: string[] = []; - constructor(assets: IAssetManager, structure: AvatarStructure) + constructor(structure: AvatarStructure) { - this._assets = assets; this._structure = structure; - this._missingMandatoryLibs = Application.instance.getConfiguration('avatar.mandatory.libraries'); - this._figureMap = new AdvancedMap(); - this._libraryNames = []; + this._missingMandatoryLibs = ConfigurationManager.getValue('avatar.mandatory.libraries'); } public async loadFigureMap(): Promise { const url = (process.env.AVATAR_FIGUREMAP_URL as string); - if(!url || !url.length) return Promise.reject('invalid_figuremap_url'); + if(!url || !url.length) throw new Error('invalid_figuremap_url'); const data = await FileUtilities.readFileAsString(url); const json = JSON.parse(data); @@ -56,7 +51,7 @@ export class AvatarAssetDownloadManager this._libraryNames.push(id); - const downloadLibrary = new AvatarAssetDownloadLibrary(id, revision, this._assets, url); + const downloadLibrary = new AvatarAssetDownloadLibrary(id, revision, url); for(const part of library.parts) { diff --git a/src/app/avatar/AvatarFigureContainer.ts b/src/avatar/AvatarFigureContainer.ts similarity index 93% rename from src/app/avatar/AvatarFigureContainer.ts rename to src/avatar/AvatarFigureContainer.ts index da458eb..d1172c7 100644 --- a/src/app/avatar/AvatarFigureContainer.ts +++ b/src/avatar/AvatarFigureContainer.ts @@ -1,4 +1,4 @@ -import { AdvancedMap } from '../../core'; +import { AdvancedMap } from '../core'; import { IAvatarFigureContainer } from './IAvatarFigureContainer'; export class AvatarFigureContainer implements IAvatarFigureContainer @@ -97,9 +97,9 @@ export class AvatarFigureContainer implements IAvatarFigureContainer if(pieces.length >= 2) { - const type = pieces[0]; - const setId = parseInt(pieces[1]); - const colors = []; + const type = pieces[0]; + const setId = parseInt(pieces[1]); + const colors = []; let index = 2; diff --git a/src/app/avatar/AvatarImage.ts b/src/avatar/AvatarImage.ts similarity index 97% rename from src/app/avatar/AvatarImage.ts rename to src/avatar/AvatarImage.ts index ddff710..e2dec5d 100644 --- a/src/app/avatar/AvatarImage.ts +++ b/src/avatar/AvatarImage.ts @@ -1,5 +1,5 @@ import { Canvas } from 'canvas'; -import { CanvasUtilities, IGraphicAsset } from '../../core'; +import { CanvasUtilities, IGraphicAsset } from '../core'; import { ActiveActionData, IActionDefinition, IActiveActionData } from './actions'; import { AssetAliasCollection } from './alias'; import { IAnimationLayerData, IAvatarDataContainer, ISpriteDataContainer } from './animation'; @@ -14,15 +14,15 @@ import { IPartColor } from './structure'; export class AvatarImage implements IAvatarImage { - private static CHANNELS_EQUAL: string = 'CHANNELS_EQUAL'; - private static CHANNELS_UNIQUE: string = 'CHANNELS_UNIQUE'; - private static CHANNELS_RED: string = 'CHANNELS_RED'; - private static CHANNELS_GREEN: string = 'CHANNELS_GREEN'; - private static CHANNELS_BLUE: string = 'CHANNELS_BLUE'; + private static CHANNELS_EQUAL: string = 'CHANNELS_EQUAL'; + private static CHANNELS_UNIQUE: string = 'CHANNELS_UNIQUE'; + private static CHANNELS_RED: string = 'CHANNELS_RED'; + private static CHANNELS_GREEN: string = 'CHANNELS_GREEN'; + private static CHANNELS_BLUE: string = 'CHANNELS_BLUE'; private static CHANNELS_DESATURATED: string = 'CHANNELS_DESATURATED'; - private static DEFAULT_ACTION: string = 'Default'; - private static DEFAULT_DIRECTION: number = 2; - private static DEFAULT_AVATAR_SET: string = AvatarSetType.FULL; + private static DEFAULT_ACTION: string = 'Default'; + private static DEFAULT_DIRECTION: number = 2; + private static DEFAULT_AVATAR_SET: string = AvatarSetType.FULL; protected _structure: AvatarStructure; protected _scale: string; @@ -197,7 +197,7 @@ export class AvatarImage implements IAvatarImage const animation = this._structure.animationManager.getAnimation(((action.definition.state + '.') + action.actionParameter)); if(!animation) continue; - + const frameCount = animation.frameCount(action.overridingAction); frames = Math.max(frames, frameCount); @@ -299,13 +299,15 @@ export class AvatarImage implements IAvatarImage ctx.fillStyle = null; } - let partCount = (bodyParts.length - 1); + let partCount = (bodyParts.length - 1); while(partCount >= 0) { const set = bodyParts[partCount]; const part = this._cache.getImageContainer(set, this._frameCounter); + console.log(part); + if(part) { const partCacheContainer = part.image; @@ -614,8 +616,8 @@ export class AvatarImage implements IAvatarImage { if(!this._sortedActions == null) return; - const _local_3: number = 0; - const _local_4: string[] = []; + const _local_3 = 0; + const _local_4: string[] = []; for(const k of this._sortedActions) _local_4.push(k.actionType); diff --git a/src/app/avatar/AvatarImageBodyPartContainer.ts b/src/avatar/AvatarImageBodyPartContainer.ts similarity index 80% rename from src/app/avatar/AvatarImageBodyPartContainer.ts rename to src/avatar/AvatarImageBodyPartContainer.ts index dcf46d1..9af1346 100644 --- a/src/app/avatar/AvatarImageBodyPartContainer.ts +++ b/src/avatar/AvatarImageBodyPartContainer.ts @@ -1,5 +1,5 @@ import { Canvas } from 'canvas'; -import { Point } from '../../core'; +import { Point } from '../core'; export class AvatarImageBodyPartContainer { @@ -10,19 +10,19 @@ export class AvatarImageBodyPartContainer constructor(image: Canvas, regPoint: Point, isCacheable: boolean) { - this._image = image; - this._regPoint = regPoint; - this._offset = new Point(0, 0); - this._isCacheable = isCacheable; + this._image = image; + this._regPoint = regPoint; + this._offset = new Point(0, 0); + this._isCacheable = isCacheable; this.cleanPoints(); } public dispose(): void { - this._image = null; - this._regPoint = null; - this._offset = null; + this._image = null; + this._regPoint = null; + this._offset = null; } private cleanPoints(): void diff --git a/src/app/avatar/AvatarImagePartContainer.ts b/src/avatar/AvatarImagePartContainer.ts similarity index 82% rename from src/app/avatar/AvatarImagePartContainer.ts rename to src/avatar/AvatarImagePartContainer.ts index ce7af9e..2862097 100644 --- a/src/app/avatar/AvatarImagePartContainer.ts +++ b/src/avatar/AvatarImagePartContainer.ts @@ -1,6 +1,5 @@ -import { IActionDefinition } from './actions/IActionDefinition'; -import { AvatarAnimationFrame } from './structure/animation/AvatarAnimationFrame'; -import { IPartColor } from './structure/figure/IPartColor'; +import { IActionDefinition } from './actions'; +import { AvatarAnimationFrame, IPartColor } from './structure'; export class AvatarImagePartContainer { @@ -17,16 +16,16 @@ export class AvatarImagePartContainer constructor(k: string, _arg_2: string, _arg_3: string, _arg_4: IPartColor, _arg_5: AvatarAnimationFrame[], _arg_6: IActionDefinition, _arg_7: boolean, _arg_8: number, _arg_9: string = '', _arg_10: boolean = false, _arg_11: number = 1) { - this._bodyPartId = k; - this._partType = _arg_2; - this._partId = _arg_3; - this._color = _arg_4; - this._frames = _arg_5; - this._action = _arg_6; - this._isColorable = _arg_7; - this._paletteMapId = _arg_8; - this._flippedPartType = _arg_9; - this._isBlendable = _arg_10; + this._bodyPartId = k; + this._partType = _arg_2; + this._partId = _arg_3; + this._color = _arg_4; + this._frames = _arg_5; + this._action = _arg_6; + this._isColorable = _arg_7; + this._paletteMapId = _arg_8; + this._flippedPartType = _arg_9; + this._isBlendable = _arg_10; if(this._partType === 'ey') this._isColorable = false; } diff --git a/src/app/avatar/AvatarRenderManager.ts b/src/avatar/AvatarRenderManager.ts similarity index 75% rename from src/app/avatar/AvatarRenderManager.ts rename to src/avatar/AvatarRenderManager.ts index abc0919..d979c70 100644 --- a/src/app/avatar/AvatarRenderManager.ts +++ b/src/avatar/AvatarRenderManager.ts @@ -1,5 +1,4 @@ -import { FileUtilities, IAssetManager, IGraphicAsset, NitroManager } from '../../core'; -import { Application } from '../Application'; +import { ConfigurationManager, FileUtilities, IGraphicAsset } from '../core'; import { AssetAliasCollection } from './alias'; import { AvatarAssetDownloadManager } from './AvatarAssetDownloadManager'; import { AvatarFigureContainer } from './AvatarFigureContainer'; @@ -15,53 +14,50 @@ import { IAvatarRenderManager } from './IAvatarRenderManager'; import { IFigureData } from './interfaces'; import { IFigurePartSet, IStructureData } from './structure'; -export class AvatarRenderManager extends NitroManager implements IAvatarRenderManager +export class AvatarRenderManager implements IAvatarRenderManager { + private static INSTANCE: AvatarRenderManager = null; + public static DEFAULT_FIGURE: string = 'hd-99999-99999'; - private _aliasCollection: AssetAliasCollection; + private _aliasCollection: AssetAliasCollection = null; - private _assets: IAssetManager; - private _structure: AvatarStructure; - private _avatarAssetDownloadManager: AvatarAssetDownloadManager; - private _effectAssetDownloadManager: EffectAssetDownloadManager; - private _placeHolderFigure: AvatarFigureContainer; + private _structure: AvatarStructure = null; + private _avatarAssetDownloadManager: AvatarAssetDownloadManager = null; + private _effectAssetDownloadManager: EffectAssetDownloadManager = null; - constructor(assets: IAssetManager) + public static async init(): Promise { - super(); + if(!AvatarRenderManager.INSTANCE) AvatarRenderManager.INSTANCE = new AvatarRenderManager(); - this._assets = assets; - this._structure = null; - this._avatarAssetDownloadManager = null; - this._effectAssetDownloadManager = null; - this._placeHolderFigure = null; + await AvatarRenderManager.instance.init(); } - public async onInit(): Promise + public async init(): Promise { this._structure = new AvatarStructure(this); this._structure.initGeometry(HabboAvatarGeometry.geometry); this._structure.initPartSets(HabboAvatarPartSets.partSets); this._structure.initAnimation(HabboAvatarAnimations.animations); + await this.loadActions(); await this.loadFigureData(); - this._aliasCollection = new AssetAliasCollection(this, this._assets); + this._aliasCollection = new AssetAliasCollection(this); this._aliasCollection.init(); if(!this._avatarAssetDownloadManager) { - this._avatarAssetDownloadManager = new AvatarAssetDownloadManager(this._assets, this._structure); + this._avatarAssetDownloadManager = new AvatarAssetDownloadManager(this._structure); await this._avatarAssetDownloadManager.loadFigureMap(); } if(!this._effectAssetDownloadManager) { - this._effectAssetDownloadManager = new EffectAssetDownloadManager(this._assets, this._structure); + this._effectAssetDownloadManager = new EffectAssetDownloadManager(this._structure); await this._effectAssetDownloadManager.loadEffectMap(); } @@ -70,23 +66,23 @@ export class AvatarRenderManager extends NitroManager implements IAvatarRenderMa private async loadActions(): Promise { this._structure.initActions({ - "actions": [ + 'actions': [ { - "id": "Default", - "state": "std", - "precedence": 1000, - "main": true, - "isDefault": true, - "geometryType": "vertical", - "activePartSet": "figure", - "assetPartDefinition": "std" + 'id': 'Default', + 'state': 'std', + 'precedence': 1000, + 'main': true, + 'isDefault': true, + 'geometryType': 'vertical', + 'activePartSet': 'figure', + 'assetPartDefinition': 'std' } ] }); const url = (process.env.AVATAR_ACTIONS_URL as string); - if(!url || !url.length) return Promise.reject('invalid_actions_url'); + if(!url || !url.length) throw new Error(`Invalid avatar actions url: ${ url }`); const data = await FileUtilities.readFileAsString(url); @@ -95,13 +91,13 @@ export class AvatarRenderManager extends NitroManager implements IAvatarRenderMa private async loadFigureData(): Promise { - const defaultFigureData = Application.instance.getConfiguration('avatar.default.figuredata'); + const defaultFigureData = ConfigurationManager.getValue('avatar.default.figuredata'); if(this._structure) this._structure.initFigureData(defaultFigureData); const url = (process.env.AVATAR_FIGUREDATA_URL as string); - if(!url || !url.length) return Promise.reject('invalid_figuredata_url'); + if(!url || !url.length) throw new Error('invalid_figuredata_url'); const data = await FileUtilities.readFileAsString(url); @@ -120,6 +116,13 @@ export class AvatarRenderManager extends NitroManager implements IAvatarRenderMa return this._avatarAssetDownloadManager.isAvatarFigureContainerReady(container); } + public async downloadAvatarFigure(container: IAvatarFigureContainer): Promise + { + if(!this._avatarAssetDownloadManager) return; + + await this._avatarAssetDownloadManager.downloadAvatarFigure(container); + } + public async createAvatarImage(figure: string, size: string, gender: string): Promise { if(!this._structure || !this._avatarAssetDownloadManager) return null; @@ -128,23 +131,14 @@ export class AvatarRenderManager extends NitroManager implements IAvatarRenderMa if(gender) this.validateAvatarFigure(figureContainer, gender); - if(!this._avatarAssetDownloadManager.isAvatarFigureContainerReady(figureContainer)) + if(!this.isFigureContainerReady(figureContainer)) { - await this._avatarAssetDownloadManager.downloadAvatarFigure(figureContainer); + await this.downloadAvatarFigure(figureContainer); } - if(!this._placeHolderFigure) this._placeHolderFigure = new AvatarFigureContainer(AvatarRenderManager.DEFAULT_FIGURE); - return new AvatarImage(this._structure, this._aliasCollection, figureContainer, size, this._effectAssetDownloadManager); } - public async downloadAvatarFigure(container: IAvatarFigureContainer): Promise - { - if(!this._avatarAssetDownloadManager) return; - - await this._avatarAssetDownloadManager.downloadAvatarFigure(container); - } - private validateAvatarFigure(container: AvatarFigureContainer, gender: string): boolean { let isValid = false; @@ -199,23 +193,23 @@ export class AvatarRenderManager extends NitroManager implements IAvatarRenderMa { if(!this._structure) return 0; - const figureData = this._structure.figureData; - const parts = Array.from(container.getPartTypeIds()); + const figureData = this._structure.figureData; + const parts = Array.from(container.getPartTypeIds()); let clubLevel = 0; for(const part of parts) { - const set = figureData.getSetType(part); - const setId = container.getPartSetId(part); - const partSet = set.getPartSet(setId); + const set = figureData.getSetType(part); + const setId = container.getPartSetId(part); + const partSet = set.getPartSet(setId); if(partSet) { clubLevel = Math.max(partSet.clubLevel, clubLevel); - const palette = figureData.getPalette(set.paletteID); - const colors = container.getPartColorIds(part); + const palette = figureData.getPalette(set.paletteID); + const colors = container.getPartColorIds(part); for(const colorId of colors) { @@ -241,7 +235,7 @@ export class AvatarRenderManager extends NitroManager implements IAvatarRenderMa public isValidFigureSetForGender(setId: number, gender: string): boolean { const structure = this.structureData; - const partSet = structure.getFigurePartSet(setId); + const partSet = structure.getFigurePartSet(setId); return !!(partSet && ((partSet.gender.toUpperCase() === 'U') || (partSet.gender.toUpperCase() === gender.toUpperCase()))); } @@ -264,8 +258,8 @@ export class AvatarRenderManager extends NitroManager implements IAvatarRenderMa private resolveFigureSets(k: number[]): IFigurePartSet[] { - const structure = this.structureData; - const partSets: IFigurePartSet[] = []; + const structure = this.structureData; + const partSets: IFigurePartSet[] = []; for(const _local_4 of k) { @@ -289,11 +283,6 @@ export class AvatarRenderManager extends NitroManager implements IAvatarRenderMa return this._aliasCollection.getAsset(name); } - public get assets(): IAssetManager - { - return this._assets; - } - public get structure(): AvatarStructure { return this._structure; @@ -315,4 +304,9 @@ export class AvatarRenderManager extends NitroManager implements IAvatarRenderMa { return this._effectAssetDownloadManager; } + + public static get instance(): AvatarRenderManager + { + return AvatarRenderManager.INSTANCE; + } } diff --git a/src/app/avatar/AvatarStructure.ts b/src/avatar/AvatarStructure.ts similarity index 95% rename from src/app/avatar/AvatarStructure.ts rename to src/avatar/AvatarStructure.ts index 5a8acbb..3d41eb0 100644 --- a/src/app/avatar/AvatarStructure.ts +++ b/src/avatar/AvatarStructure.ts @@ -1,4 +1,4 @@ -import { AdvancedMap, IAssetAnimation, IAssetManager, Point } from '../../core'; +import { AdvancedMap, AssetManager, IAssetAnimation, Point } from '../core'; import { ActionDefinition, AvatarActionManager, IActionDefinition, IActiveActionData } from './actions'; import { Animation, AnimationManager, AvatarAnimationLayerData } from './animation'; import { AvatarImagePartContainer } from './AvatarImagePartContainer'; @@ -104,13 +104,13 @@ export class AvatarStructure this._figureData.injectJSON(data); } - public registerAnimations(k: IAssetManager, _arg_2: string = 'fx', _arg_3: number = 200): void + public registerAnimations(name: string = 'fx', _arg_3: number = 200): void { let index = 0; while(index < _arg_3) { - const collection = k.getCollection((_arg_2 + index)); + const collection = AssetManager.getCollection((name + index)); if(collection) { @@ -227,8 +227,8 @@ export class AvatarStructure { let _local_3: string[] = []; - const _local_4: string[] = []; - const _local_5 = k.definition.geometryType; + const _local_4: string[] = []; + const _local_5 = k.definition.geometryType; if(k.definition.isAnimation) { @@ -332,10 +332,10 @@ export class AvatarStructure if(!_arg_3 == null) return []; - const _local_9 = this._partSetsData.getActiveParts(_arg_3.definition); - const _local_11: AvatarImagePartContainer[] = []; - let _local_14: any[] = [ 0 ]; - const _local_15 = this._animationData.getAction(_arg_3.definition); + const _local_9 = this._partSetsData.getActiveParts(_arg_3.definition); + const _local_11: AvatarImagePartContainer[] = []; + let _local_14: any[] = [ 0 ]; + const _local_15 = this._animationData.getAction(_arg_3.definition); if(_arg_3.definition.isAnimation) { @@ -364,8 +364,8 @@ export class AvatarStructure } } - const _local_16 = this._geometry.getParts(_arg_4, k, _arg_5, _local_9, _arg_7); - const _local_21 = _arg_2.getPartTypeIds(); + const _local_16 = this._geometry.getParts(_arg_4, k, _arg_5, _local_9, _arg_7); + const _local_21 = _arg_2.getPartTypeIds(); for(const _local_17 of _local_21) { @@ -445,7 +445,7 @@ export class AvatarStructure for(const _local_12 of _local_16) { let _local_39: IPartColor = null; - let _local_38 = false; + let _local_38 = false; const _local_40 = ((_arg_8) && (_arg_8.getValue(_local_12))); diff --git a/src/app/avatar/EffectAssetDownloadLibrary.ts b/src/avatar/EffectAssetDownloadLibrary.ts similarity index 77% rename from src/app/avatar/EffectAssetDownloadLibrary.ts rename to src/avatar/EffectAssetDownloadLibrary.ts index 22f238e..081e718 100644 --- a/src/app/avatar/EffectAssetDownloadLibrary.ts +++ b/src/avatar/EffectAssetDownloadLibrary.ts @@ -1,4 +1,4 @@ -import { IAssetAnimation, IAssetManager } from '../../core'; +import { AssetManager, IAssetAnimation } from '../core'; export class EffectAssetDownloadLibrary { @@ -10,16 +10,14 @@ export class EffectAssetDownloadLibrary private _libraryName: string; private _revision: string; private _downloadUrl: string; - private _assets: IAssetManager; private _animation: { [index: string]: IAssetAnimation }; - constructor(id: string, revision: string, assets: IAssetManager, assetUrl: string) + constructor(id: string, revision: string, assetUrl: string) { this._state = EffectAssetDownloadLibrary.NOT_LOADED; this._libraryName = id; this._revision = revision; this._downloadUrl = assetUrl; - this._assets = assets; this._animation = null; this._downloadUrl = this._downloadUrl.replace(/%libname%/gi, this._libraryName); @@ -32,7 +30,7 @@ export class EffectAssetDownloadLibrary { if(this._state === EffectAssetDownloadLibrary.LOADED) return true; - const asset = this._assets.getCollection(this._libraryName); + const asset = AssetManager.getCollection(this._libraryName); if(asset) { @@ -46,15 +44,15 @@ export class EffectAssetDownloadLibrary public async downloadAsset(): Promise { - if(!this._assets || (this._state === EffectAssetDownloadLibrary.LOADING)) return; + if(this._state === EffectAssetDownloadLibrary.LOADING) return; if(this.checkIfAssetLoaded()) return true; this._state = EffectAssetDownloadLibrary.LOADING; - if(!await this._assets.downloadAsset(this._downloadUrl)) return false; + if(!await AssetManager.downloadAsset(this._downloadUrl)) return false; - const collection = this._assets.getCollection(this._libraryName); + const collection = AssetManager.getCollection(this._libraryName); if(collection) this._animation = collection.data.animations; diff --git a/src/app/avatar/EffectAssetDownloadManager.ts b/src/avatar/EffectAssetDownloadManager.ts similarity index 82% rename from src/app/avatar/EffectAssetDownloadManager.ts rename to src/avatar/EffectAssetDownloadManager.ts index 9e8a833..3da45b3 100644 --- a/src/app/avatar/EffectAssetDownloadManager.ts +++ b/src/avatar/EffectAssetDownloadManager.ts @@ -1,32 +1,27 @@ -import { AdvancedMap, FileUtilities, IAssetManager } from '../../core'; -import { Application } from '../Application'; +import { AdvancedMap, ConfigurationManager, FileUtilities } from '../core'; import { AvatarStructure } from './AvatarStructure'; import { EffectAssetDownloadLibrary } from './EffectAssetDownloadLibrary'; export class EffectAssetDownloadManager { - private _assets: IAssetManager; private _structure: AvatarStructure; - private _missingMandatoryLibs: string[]; - private _effectMap: AdvancedMap; - private _libraryNames: string[]; + private _missingMandatoryLibs: string[] = []; + private _effectMap: AdvancedMap = new AdvancedMap(); + private _libraryNames: string[] = []; - constructor(assets: IAssetManager, structure: AvatarStructure) + constructor(structure: AvatarStructure) { - this._assets = assets; this._structure = structure; - this._missingMandatoryLibs = Application.instance.getConfiguration('avatar.mandatory.effect.libraries'); - this._effectMap = new AdvancedMap(); - this._libraryNames = []; + this._missingMandatoryLibs = ConfigurationManager.getValue('avatar.mandatory.effect.libraries'); } public async loadEffectMap(): Promise { const url = (process.env.AVATAR_EFFECTMAP_URL as string); - if(!url || !url.length) return Promise.reject('invalid_effectmap_url'); + if(!url || !url.length) throw new Error('invalid_effectmap_url'); const data = await FileUtilities.readFileAsString(url); const json = JSON.parse(data); @@ -56,7 +51,7 @@ export class EffectAssetDownloadManager this._libraryNames.push(lib); - const downloadLibrary = new EffectAssetDownloadLibrary(lib, revision, this._assets, url); + const downloadLibrary = new EffectAssetDownloadLibrary(lib, revision, url); let existing = this._effectMap.getValue(id); diff --git a/src/app/avatar/FigureDataContainer.ts b/src/avatar/FigureDataContainer.ts similarity index 92% rename from src/app/avatar/FigureDataContainer.ts rename to src/avatar/FigureDataContainer.ts index 387fefd..6037384 100644 --- a/src/app/avatar/FigureDataContainer.ts +++ b/src/avatar/FigureDataContainer.ts @@ -1,4 +1,4 @@ -import { AdvancedMap } from '../../core'; +import { AdvancedMap } from '../core'; export class FigureDataContainer { @@ -31,18 +31,18 @@ export class FigureDataContainer public loadAvatarData(k: string, _arg_2: string): void { - this._data = new AdvancedMap(); - this._colors = new AdvancedMap(); - this._gender = _arg_2; + this._data = new AdvancedMap(); + this._colors = new AdvancedMap(); + this._gender = _arg_2; this.parseFigureString(k); } public dispose(): void { - this._data = null; - this._colors = null; - this._isDisposed = true; + this._data = null; + this._colors = null; + this._isDisposed = true; } public get disposed(): boolean @@ -60,9 +60,9 @@ export class FigureDataContainer if(_local_3.length > 0) { - const part = _local_3[0]; - const setId = parseInt(_local_3[1]); - const colors: number[] = []; + const part = _local_3[0]; + const setId = parseInt(_local_3[1]); + const colors: number[] = []; let i = 2; @@ -192,8 +192,8 @@ export class FigureDataContainer { const partSets: string[] = [ FigureDataContainer.HD ]; - let figure = ''; - const sets: string[] = []; + let figure = ''; + const sets: string[] = []; for(const part of partSets) { diff --git a/src/app/avatar/IAvatarFigureContainer.ts b/src/avatar/IAvatarFigureContainer.ts similarity index 100% rename from src/app/avatar/IAvatarFigureContainer.ts rename to src/avatar/IAvatarFigureContainer.ts diff --git a/src/app/avatar/IAvatarImage.ts b/src/avatar/IAvatarImage.ts similarity index 92% rename from src/app/avatar/IAvatarImage.ts rename to src/avatar/IAvatarImage.ts index d0aa9d7..af06694 100644 --- a/src/app/avatar/IAvatarImage.ts +++ b/src/avatar/IAvatarImage.ts @@ -1,11 +1,11 @@ import { Canvas } from 'canvas'; -import { IDisposable, IGraphicAsset } from '../../core'; +import { IGraphicAsset } from '../core'; import { IActiveActionData } from './actions'; import { IAnimationLayerData, IAvatarDataContainer, ISpriteDataContainer } from './animation'; import { IAvatarFigureContainer } from './IAvatarFigureContainer'; import { IPartColor } from './structure'; -export interface IAvatarImage extends IDisposable +export interface IAvatarImage { setDirection(_arg_1: string, _arg_2: number): void; setDirectionAngle(_arg_1: string, _arg_2: number): void; diff --git a/src/app/avatar/IAvatarRenderManager.ts b/src/avatar/IAvatarRenderManager.ts similarity index 88% rename from src/app/avatar/IAvatarRenderManager.ts rename to src/avatar/IAvatarRenderManager.ts index a0c52ae..60fa3d3 100644 --- a/src/app/avatar/IAvatarRenderManager.ts +++ b/src/avatar/IAvatarRenderManager.ts @@ -1,4 +1,4 @@ -import { IAssetManager, IGraphicAsset, INitroManager } from '../../core'; +import { IGraphicAsset } from '../core'; import { AvatarAssetDownloadManager } from './AvatarAssetDownloadManager'; import { AvatarStructure } from './AvatarStructure'; import { EffectAssetDownloadManager } from './EffectAssetDownloadManager'; @@ -6,8 +6,9 @@ import { IAvatarFigureContainer } from './IAvatarFigureContainer'; import { IAvatarImage } from './IAvatarImage'; import { IStructureData } from './structure/IStructureData'; -export interface IAvatarRenderManager extends INitroManager +export interface IAvatarRenderManager { + init: () => Promise; createFigureContainer(figure: string): IAvatarFigureContainer; isFigureContainerReady(container: IAvatarFigureContainer): boolean; createAvatarImage(figure: string, size: string, gender: string): Promise; @@ -17,7 +18,6 @@ export interface IAvatarRenderManager extends INitroManager getFigureStringWithFigureIds(k: string, _arg_2: string, _arg_3: number[]): string; getMandatoryAvatarPartSetIds(k: string, _arg_2: number): string[]; getAssetByName(name: string): IGraphicAsset; - assets: IAssetManager; structure: AvatarStructure; structureData: IStructureData; downloadManager: AvatarAssetDownloadManager; diff --git a/src/app/avatar/actions/ActionDefinition.ts b/src/avatar/actions/ActionDefinition.ts similarity index 82% rename from src/app/avatar/actions/ActionDefinition.ts rename to src/avatar/actions/ActionDefinition.ts index 1fc5748..a1ea01c 100644 --- a/src/app/avatar/actions/ActionDefinition.ts +++ b/src/avatar/actions/ActionDefinition.ts @@ -1,4 +1,4 @@ -import { AdvancedMap } from '../../../core'; +import { AdvancedMap } from '../../core'; import { ActionType } from './ActionType'; import { IActionDefinition } from './IActionDefinition'; @@ -24,23 +24,23 @@ export class ActionDefinition implements IActionDefinition constructor(data: any) { - this._id = data.id; - this._state = data.state; - this._precedence = data.precedence; - this._activePartSet = data.activePartSet; - this._assetPartDefinition = data.assetPartDefinition; - this._lay = data.lay; - this._geometryType = data.geometryType; - this._isMain = data.main || false; - this._isDefault = data.isDefault || false; - this._isAnimation = data.animation || false; - this._startFromFrameZero = data.startFromFrameZero || false; - this._prevents = data.prevents || []; - this._preventHeadTurn = data.preventHeadTurn || false; - this._types = new AdvancedMap(); - this._params = new AdvancedMap(); + this._id = data.id; + this._state = data.state; + this._precedence = data.precedence; + this._activePartSet = data.activePartSet; + this._assetPartDefinition = data.assetPartDefinition; + this._lay = data.lay; + this._geometryType = data.geometryType; + this._isMain = data.main || false; + this._isDefault = data.isDefault || false; + this._isAnimation = data.animation || false; + this._startFromFrameZero = data.startFromFrameZero || false; + this._prevents = data.prevents || []; + this._preventHeadTurn = data.preventHeadTurn || false; + this._types = new AdvancedMap(); + this._params = new AdvancedMap(); this._defaultParameterValue = ''; - this._canvasOffsets = null; + this._canvasOffsets = null; if(data.params && (data.params.length > 0)) { diff --git a/src/app/avatar/actions/ActionType.ts b/src/avatar/actions/ActionType.ts similarity index 72% rename from src/app/avatar/actions/ActionType.ts rename to src/avatar/actions/ActionType.ts index e90ec68..d6d0312 100644 --- a/src/app/avatar/actions/ActionType.ts +++ b/src/avatar/actions/ActionType.ts @@ -8,11 +8,11 @@ export class ActionType constructor(data: any) { - this._id = parseInt(data.id); - this._value = parseInt(data.id); - this._prevents = data.prevents || []; - this._preventHeadTurn = data.preventHeadTurn || false; - this._isAnimated = true; + this._id = parseInt(data.id); + this._value = parseInt(data.id); + this._prevents = data.prevents || []; + this._preventHeadTurn = data.preventHeadTurn || false; + this._isAnimated = true; if((data.animated !== undefined) && (data.animated === false)) this._isAnimated = false; } diff --git a/src/app/avatar/actions/ActiveActionData.ts b/src/avatar/actions/ActiveActionData.ts similarity index 80% rename from src/app/avatar/actions/ActiveActionData.ts rename to src/avatar/actions/ActiveActionData.ts index 8e25916..138c408 100644 --- a/src/app/avatar/actions/ActiveActionData.ts +++ b/src/avatar/actions/ActiveActionData.ts @@ -11,18 +11,18 @@ export class ActiveActionData implements IActiveActionData constructor(action: string, parameter: string = '', startFrame: number = 0) { - this._actionType = action || ''; - this._actionParameter = parameter || ''; - this._definition = null; - this._startFrame = startFrame || 0; - this._overridingAction = null; + this._actionType = action || ''; + this._actionParameter = parameter || ''; + this._definition = null; + this._startFrame = startFrame || 0; + this._overridingAction = null; } public dispose(): void { - this._actionType = null; - this._actionParameter = null; - this._definition = null; + this._actionType = null; + this._actionParameter = null; + this._definition = null; } public get id(): string diff --git a/src/app/avatar/actions/AvatarActionManager.ts b/src/avatar/actions/AvatarActionManager.ts similarity index 92% rename from src/app/avatar/actions/AvatarActionManager.ts rename to src/avatar/actions/AvatarActionManager.ts index 6d48a03..b582cc5 100644 --- a/src/app/avatar/actions/AvatarActionManager.ts +++ b/src/avatar/actions/AvatarActionManager.ts @@ -1,4 +1,4 @@ -import { AdvancedMap } from '../../../core'; +import { AdvancedMap } from '../../core'; import { ActionDefinition } from './ActionDefinition'; import { IActiveActionData } from './IActiveActionData'; @@ -43,7 +43,7 @@ export class AvatarActionManager for(const canvasOffset of offset.offsets) { - const size = (canvasOffset.size || ''); + const size = (canvasOffset.size || ''); const direction = canvasOffset.direction; if((size === '') || (direction === undefined)) continue; @@ -104,8 +104,8 @@ export class AvatarActionManager { if(!activeAction) continue; - const action = this._actions.getValue(activeAction.actionType); - const offsets = action && action.getOffsets(_arg_2, _arg_3); + const action = this._actions.getValue(activeAction.actionType); + const offsets = action && action.getOffsets(_arg_2, _arg_3); if(offsets) canvasOffsets = offsets; } @@ -141,8 +141,8 @@ export class AvatarActionManager private filterActions(actions: IActiveActionData[]): IActiveActionData[] { - let preventions: string[] = []; - const activeActions: IActiveActionData[] = []; + let preventions: string[] = []; + const activeActions: IActiveActionData[] = []; for(const action of actions) { diff --git a/src/app/avatar/actions/IActionDefinition.ts b/src/avatar/actions/IActionDefinition.ts similarity index 100% rename from src/app/avatar/actions/IActionDefinition.ts rename to src/avatar/actions/IActionDefinition.ts diff --git a/src/app/avatar/actions/IActiveActionData.ts b/src/avatar/actions/IActiveActionData.ts similarity index 100% rename from src/app/avatar/actions/IActiveActionData.ts rename to src/avatar/actions/IActiveActionData.ts diff --git a/src/app/avatar/actions/index.ts b/src/avatar/actions/index.ts similarity index 100% rename from src/app/avatar/actions/index.ts rename to src/avatar/actions/index.ts diff --git a/src/app/avatar/alias/AssetAlias.ts b/src/avatar/alias/AssetAlias.ts similarity index 83% rename from src/app/avatar/alias/AssetAlias.ts rename to src/avatar/alias/AssetAlias.ts index e6564f7..50059aa 100644 --- a/src/app/avatar/alias/AssetAlias.ts +++ b/src/avatar/alias/AssetAlias.ts @@ -1,4 +1,4 @@ -import { IAssetAlias } from '../../../core'; +import { IAssetAlias } from '../../core'; export class AssetAlias { @@ -9,8 +9,8 @@ export class AssetAlias constructor(name: string, alias: IAssetAlias) { - this._name = name; - this._link = alias.link; + this._name = name; + this._link = alias.link; this._flipH = alias.flipH; this._flipV = alias.flipV; } diff --git a/src/app/avatar/alias/AssetAliasCollection.ts b/src/avatar/alias/AssetAliasCollection.ts similarity index 79% rename from src/app/avatar/alias/AssetAliasCollection.ts rename to src/avatar/alias/AssetAliasCollection.ts index f21feec..97e2cf5 100644 --- a/src/app/avatar/alias/AssetAliasCollection.ts +++ b/src/avatar/alias/AssetAliasCollection.ts @@ -1,25 +1,22 @@ -import { AdvancedMap, IAssetManager, IGraphicAsset } from '../../../core'; +import { AdvancedMap, AssetManager, IGraphicAsset } from '../../core'; import { AvatarRenderManager } from '../AvatarRenderManager'; import { AssetAlias } from './AssetAlias'; export class AssetAliasCollection { - private _assets: IAssetManager; private _aliases: AdvancedMap; private _avatarRenderManager: AvatarRenderManager; private _missingAssetNames: string[]; - constructor(renderManager: AvatarRenderManager, assetManager: IAssetManager) + constructor(renderManager: AvatarRenderManager) { this._avatarRenderManager = renderManager; this._aliases = new AdvancedMap(); - this._assets = assetManager; this._missingAssetNames = []; } public dispose(): void { - this._assets = null; this._aliases = null; } @@ -30,7 +27,7 @@ export class AssetAliasCollection public init(): void { - for(const collection of this._assets.collections.getValues()) + for(const collection of AssetManager.collections.getValues()) { if(!collection) continue; @@ -76,11 +73,9 @@ export class AssetAliasCollection public getAsset(name: string): IGraphicAsset { - if(!this._assets) return null; - name = this.getAssetName(name); - const asset = this._assets.getAsset(name); + const asset = AssetManager.getAsset(name); if(!asset) return null; diff --git a/src/app/avatar/alias/index.ts b/src/avatar/alias/index.ts similarity index 100% rename from src/app/avatar/alias/index.ts rename to src/avatar/alias/index.ts diff --git a/src/app/avatar/animation/AddDataContainer.ts b/src/avatar/animation/AddDataContainer.ts similarity index 95% rename from src/app/avatar/animation/AddDataContainer.ts rename to src/avatar/animation/AddDataContainer.ts index 7dddd61..f30fe92 100644 --- a/src/app/avatar/animation/AddDataContainer.ts +++ b/src/avatar/animation/AddDataContainer.ts @@ -1,4 +1,4 @@ -import { IAssetAnimationAdd } from '../../../core'; +import { IAssetAnimationAdd } from '../../core'; export class AddDataContainer { diff --git a/src/app/avatar/animation/Animation.ts b/src/avatar/animation/Animation.ts similarity index 99% rename from src/app/avatar/animation/Animation.ts rename to src/avatar/animation/Animation.ts index 8480e46..59ec071 100644 --- a/src/app/avatar/animation/Animation.ts +++ b/src/avatar/animation/Animation.ts @@ -1,4 +1,4 @@ -import { AdvancedMap, IAssetAnimation, IAssetAnimationFrame } from '../../../core'; +import { AdvancedMap, IAssetAnimation, IAssetAnimationFrame } from '../../core'; import { AvatarStructure } from '../AvatarStructure'; import { AddDataContainer } from './AddDataContainer'; import { AvatarAnimationLayerData } from './AvatarAnimationLayerData'; diff --git a/src/app/avatar/animation/AnimationManager.ts b/src/avatar/animation/AnimationManager.ts similarity index 95% rename from src/app/avatar/animation/AnimationManager.ts rename to src/avatar/animation/AnimationManager.ts index 1e543f0..79ffb68 100644 --- a/src/app/avatar/animation/AnimationManager.ts +++ b/src/avatar/animation/AnimationManager.ts @@ -1,4 +1,4 @@ -import { AdvancedMap, IAssetAnimation } from '../../../core'; +import { AdvancedMap, IAssetAnimation } from '../../core'; import { AvatarStructure } from '../AvatarStructure'; import { Animation } from './Animation'; import { IAnimation } from './IAnimation'; diff --git a/src/app/avatar/animation/AvatarAnimationLayerData.ts b/src/avatar/animation/AvatarAnimationLayerData.ts similarity index 99% rename from src/app/avatar/animation/AvatarAnimationLayerData.ts rename to src/avatar/animation/AvatarAnimationLayerData.ts index 3c9526f..89f804f 100644 --- a/src/app/avatar/animation/AvatarAnimationLayerData.ts +++ b/src/avatar/animation/AvatarAnimationLayerData.ts @@ -1,4 +1,4 @@ -import { AdvancedMap, IAssetAnimationFramePart } from '../../../core'; +import { AdvancedMap, IAssetAnimationFramePart } from '../../core'; import { ActiveActionData, IActionDefinition, IActiveActionData } from '../actions'; import { IAnimationLayerData } from './IAnimationLayerData'; diff --git a/src/app/avatar/animation/AvatarDataContainer.ts b/src/avatar/animation/AvatarDataContainer.ts similarity index 98% rename from src/app/avatar/animation/AvatarDataContainer.ts rename to src/avatar/animation/AvatarDataContainer.ts index eaa49ef..391c022 100644 --- a/src/app/avatar/animation/AvatarDataContainer.ts +++ b/src/avatar/animation/AvatarDataContainer.ts @@ -1,4 +1,4 @@ -import { AdvancedMap, IAssetAnimationAvatar } from '../../../core'; +import { AdvancedMap, IAssetAnimationAvatar } from '../../core'; import { IAvatarDataContainer } from './IAvatarDataContainer'; export class AvatarDataContainer implements IAvatarDataContainer diff --git a/src/app/avatar/animation/DirectionDataContainer.ts b/src/avatar/animation/DirectionDataContainer.ts similarity index 80% rename from src/app/avatar/animation/DirectionDataContainer.ts rename to src/avatar/animation/DirectionDataContainer.ts index b22fb89..bbd0b69 100644 --- a/src/app/avatar/animation/DirectionDataContainer.ts +++ b/src/avatar/animation/DirectionDataContainer.ts @@ -1,4 +1,4 @@ -import { IAssetAnimationDirection } from '../../../core'; +import { IAssetAnimationDirection } from '../../core'; export class DirectionDataContainer { diff --git a/src/app/avatar/animation/IAnimation.ts b/src/avatar/animation/IAnimation.ts similarity index 100% rename from src/app/avatar/animation/IAnimation.ts rename to src/avatar/animation/IAnimation.ts diff --git a/src/app/avatar/animation/IAnimationLayerData.ts b/src/avatar/animation/IAnimationLayerData.ts similarity index 100% rename from src/app/avatar/animation/IAnimationLayerData.ts rename to src/avatar/animation/IAnimationLayerData.ts diff --git a/src/app/avatar/animation/IAnimationManager.ts b/src/avatar/animation/IAnimationManager.ts similarity index 87% rename from src/app/avatar/animation/IAnimationManager.ts rename to src/avatar/animation/IAnimationManager.ts index 0a4510d..4d2c4ac 100644 --- a/src/app/avatar/animation/IAnimationManager.ts +++ b/src/avatar/animation/IAnimationManager.ts @@ -1,4 +1,4 @@ -import { AdvancedMap } from '../../../core'; +import { AdvancedMap } from '../../core'; import { IAnimation } from './IAnimation'; import { IAnimationLayerData } from './IAnimationLayerData'; diff --git a/src/app/avatar/animation/IAvatarDataContainer.ts b/src/avatar/animation/IAvatarDataContainer.ts similarity index 100% rename from src/app/avatar/animation/IAvatarDataContainer.ts rename to src/avatar/animation/IAvatarDataContainer.ts diff --git a/src/app/avatar/animation/ISpriteDataContainer.ts b/src/avatar/animation/ISpriteDataContainer.ts similarity index 100% rename from src/app/avatar/animation/ISpriteDataContainer.ts rename to src/avatar/animation/ISpriteDataContainer.ts diff --git a/src/app/avatar/animation/SpriteDataContainer.ts b/src/avatar/animation/SpriteDataContainer.ts similarity index 96% rename from src/app/avatar/animation/SpriteDataContainer.ts rename to src/avatar/animation/SpriteDataContainer.ts index 1f9db3d..bf7d7ca 100644 --- a/src/app/avatar/animation/SpriteDataContainer.ts +++ b/src/avatar/animation/SpriteDataContainer.ts @@ -1,4 +1,4 @@ -import { IAssetAnimationSprite } from '../../../core'; +import { IAssetAnimationSprite } from '../../core'; import { IAnimation } from './IAnimation'; import { ISpriteDataContainer } from './ISpriteDataContainer'; @@ -16,6 +16,7 @@ export class SpriteDataContainer implements ISpriteDataContainer constructor(animation: IAnimation, sprite: IAssetAnimationSprite) { + console.log(sprite); this._animation = animation; this._id = sprite.id; this._ink = sprite.ink; diff --git a/src/app/avatar/animation/index.ts b/src/avatar/animation/index.ts similarity index 100% rename from src/app/avatar/animation/index.ts rename to src/avatar/animation/index.ts diff --git a/src/app/avatar/cache/AvatarImageActionCache.ts b/src/avatar/cache/AvatarImageActionCache.ts similarity index 96% rename from src/app/avatar/cache/AvatarImageActionCache.ts rename to src/avatar/cache/AvatarImageActionCache.ts index 8f878ce..ae2a7ce 100644 --- a/src/app/avatar/cache/AvatarImageActionCache.ts +++ b/src/avatar/cache/AvatarImageActionCache.ts @@ -1,4 +1,4 @@ -import { AdvancedMap } from '../../../core'; +import { AdvancedMap } from '../../core'; import { AvatarImageDirectionCache } from './AvatarImageDirectionCache'; export class AvatarImageActionCache diff --git a/src/app/avatar/cache/AvatarImageBodyPartCache.ts b/src/avatar/cache/AvatarImageBodyPartCache.ts similarity index 94% rename from src/app/avatar/cache/AvatarImageBodyPartCache.ts rename to src/avatar/cache/AvatarImageBodyPartCache.ts index 6640b78..2fcc21a 100644 --- a/src/app/avatar/cache/AvatarImageBodyPartCache.ts +++ b/src/avatar/cache/AvatarImageBodyPartCache.ts @@ -1,4 +1,4 @@ -import { AdvancedMap } from '../../../core'; +import { AdvancedMap } from '../../core'; import { IActiveActionData } from '../actions'; import { AvatarImageActionCache } from './AvatarImageActionCache'; @@ -35,8 +35,8 @@ export class AvatarImageBodyPartCache this._cache.reset(); - this._cache = null; - this._disposed = true; + this._cache = null; + this._disposed = true; } } diff --git a/src/app/avatar/cache/AvatarImageCache.ts b/src/avatar/cache/AvatarImageCache.ts similarity index 89% rename from src/app/avatar/cache/AvatarImageCache.ts rename to src/avatar/cache/AvatarImageCache.ts index 96d7fef..3f850d1 100644 --- a/src/app/avatar/cache/AvatarImageCache.ts +++ b/src/avatar/cache/AvatarImageCache.ts @@ -1,4 +1,4 @@ -import { AdvancedMap, CanvasUtilities, Point, Rectangle } from '../../../core'; +import { AdvancedMap, CanvasUtilities, Point, Rectangle } from '../../core'; import { IActiveActionData } from '../actions'; import { AssetAliasCollection } from '../alias'; import { AvatarAnimationLayerData } from '../animation'; @@ -45,10 +45,10 @@ export class AvatarImageCache if(this._disposed) return; this._structure = null; - this._avatar = null; - this._assets = null; - this._canvas = null; - this._disposed = true; + this._avatar = null; + this._assets = null; + this._canvas = null; + this._disposed = true; if(this._cache) { @@ -138,16 +138,16 @@ export class AvatarImageCache if((((this._geometryType === GeometryType.SITTING) && (k === GeometryType.VERTICAL)) || ((this._geometryType === GeometryType.VERTICAL) && (k === GeometryType.SITTING)) || ((this._geometryType === GeometryType.SNOWWARS_HORIZONTAL) && (k = GeometryType.SNOWWARS_HORIZONTAL)))) { - this._geometryType = k; - this._canvas = null; + this._geometryType = k; + this._canvas = null; return; } this.disposeInactiveActions(0); - this._geometryType = k; - this._canvas = null; + this._geometryType = k; + this._canvas = null; } public getImageContainer(k: string, frameNumber: number): AvatarImageBodyPartContainer @@ -315,10 +315,10 @@ export class AvatarImageCache if(!this._canvas) return null; } - const isFlipped = AvatarDirectionAngle.DIRECTION_IS_FLIPPED[direction] || false; + const isFlipped = AvatarDirectionAngle.DIRECTION_IS_FLIPPED[direction] || false; let assetPartDefinition = _arg_4.definition.assetPartDefinition; - let isCacheable = true; - let containerIndex = (containers.length - 1); + let isCacheable = true; + let containerIndex = (containers.length - 1); while(containerIndex >= 0) { @@ -330,10 +330,10 @@ export class AvatarImageCache { if(!((container.partType === 'ri') && !container.partId)) { - const partId = container.partId; - const animationFrame = container.getFrameDefinition(frameCount); + const partId = container.partId; + const animationFrame = container.getFrameDefinition(frameCount); - let partType = container.partType; + let partType = container.partType; let frameNumber = 0; if(animationFrame) @@ -344,8 +344,8 @@ export class AvatarImageCache } else frameNumber = container.getFrameIndex(frameCount); - let assetDirection = direction; - let flipH = false; + let assetDirection = direction; + let flipH = false; if(isFlipped) { @@ -355,21 +355,21 @@ export class AvatarImageCache } else { - if(direction === 4) assetDirection = 2; - else if(direction === 5) assetDirection = 1; - else if(direction === 6) assetDirection = 0; + if(direction === 4) assetDirection = 2; + else if(direction === 5) assetDirection = 1; + else if(direction === 6) assetDirection = 0; if(container.flippedPartType !== partType) partType = container.flippedPartType; } } - let assetName = (this._scale + '_' + assetPartDefinition + '_' + partType + '_' + partId + '_' + assetDirection + '_' + frameNumber); - let asset = this._assets.getAsset(assetName); + let assetName = (this._scale + '_' + assetPartDefinition + '_' + partType + '_' + partId + '_' + assetDirection + '_' + frameNumber); + let asset = this._assets.getAsset(assetName); if(!asset) { - assetName = (this._scale + '_std_' + partType + '_' + partId + '_' + assetDirection + '_0'); - asset = this._assets.getAsset(assetName); + assetName = (this._scale + '_std_' + partType + '_' + partId + '_' + assetDirection + '_0'); + asset = this._assets.getAsset(assetName); } if(asset) @@ -399,9 +399,9 @@ export class AvatarImageCache if(!this._unionImages.length) return null; - const imageData = this.createUnionImage(this._unionImages, isFlipped); - const canvasOffset = ((this._scale === AvatarScaleType.LARGE) ? (this._canvas.height - 16) : (this._canvas.height - 8)); - const offset = new Point(-(imageData.regPoint.x), (canvasOffset - imageData.regPoint.y)); + const imageData = this.createUnionImage(this._unionImages, isFlipped); + const canvasOffset = ((this._scale === AvatarScaleType.LARGE) ? (this._canvas.height - 16) : (this._canvas.height - 8)); + const offset = new Point(-(imageData.regPoint.x), (canvasOffset - imageData.regPoint.y)); if(isFlipped && (assetPartDefinition !== 'lay')) offset.x = (offset.x + ((this._scale === AvatarScaleType.LARGE) ? 67 : 31)); @@ -459,7 +459,7 @@ export class AvatarImageCache if(flipH) { - scale = -1; + scale = -1; tx = ((data.rect.x + data.rect.width) + regPoint.x); ty = (regPoint.y - data.rect.y); } diff --git a/src/app/avatar/cache/AvatarImageDirectionCache.ts b/src/avatar/cache/AvatarImageDirectionCache.ts similarity index 91% rename from src/app/avatar/cache/AvatarImageDirectionCache.ts rename to src/avatar/cache/AvatarImageDirectionCache.ts index 081d2ad..5d316a0 100644 --- a/src/app/avatar/cache/AvatarImageDirectionCache.ts +++ b/src/avatar/cache/AvatarImageDirectionCache.ts @@ -1,4 +1,4 @@ -import { AdvancedMap } from '../../../core'; +import { AdvancedMap } from '../../core'; import { AvatarImageBodyPartContainer } from '../AvatarImageBodyPartContainer'; import { AvatarImagePartContainer } from '../AvatarImagePartContainer'; @@ -9,8 +9,8 @@ export class AvatarImageDirectionCache constructor(k: AvatarImagePartContainer[]) { - this._partList = k; - this._images = new AdvancedMap(); + this._partList = k; + this._images = new AdvancedMap(); } public dispose(): void diff --git a/src/app/avatar/cache/CompleteImageData.ts b/src/avatar/cache/CompleteImageData.ts similarity index 96% rename from src/app/avatar/cache/CompleteImageData.ts rename to src/avatar/cache/CompleteImageData.ts index 5e3b63b..dff4bbe 100644 --- a/src/app/avatar/cache/CompleteImageData.ts +++ b/src/avatar/cache/CompleteImageData.ts @@ -1,5 +1,5 @@ import { Canvas } from 'canvas'; -import { Point, Rectangle } from '../../../core'; +import { Point, Rectangle } from '../../core'; export class CompleteImageData { diff --git a/src/app/avatar/cache/ImageData.ts b/src/avatar/cache/ImageData.ts similarity index 95% rename from src/app/avatar/cache/ImageData.ts rename to src/avatar/cache/ImageData.ts index 8757694..3140b22 100644 --- a/src/app/avatar/cache/ImageData.ts +++ b/src/avatar/cache/ImageData.ts @@ -1,4 +1,4 @@ -import { Point, Rectangle, Texture } from '../../../core'; +import { Point, Rectangle, Texture } from '../../core'; export class ImageData { diff --git a/src/app/avatar/cache/index.ts b/src/avatar/cache/index.ts similarity index 100% rename from src/app/avatar/cache/index.ts rename to src/avatar/cache/index.ts diff --git a/src/app/avatar/data/HabboAvatarAnimations.ts b/src/avatar/data/HabboAvatarAnimations.ts similarity index 100% rename from src/app/avatar/data/HabboAvatarAnimations.ts rename to src/avatar/data/HabboAvatarAnimations.ts diff --git a/src/app/avatar/data/HabboAvatarGeometry.ts b/src/avatar/data/HabboAvatarGeometry.ts similarity index 99% rename from src/app/avatar/data/HabboAvatarGeometry.ts rename to src/avatar/data/HabboAvatarGeometry.ts index 55c70b6..e6b9db0 100644 --- a/src/app/avatar/data/HabboAvatarGeometry.ts +++ b/src/avatar/data/HabboAvatarGeometry.ts @@ -12,17 +12,17 @@ export const HabboAvatarGeometry = { 'geometries': [ { 'id': 'vertical', - 'width': 64, - 'height': 110, + 'width': 90, + 'height': 130, 'dx': 0, - 'dy': 6 + 'dy': 0 }, { 'id': 'sitting', - 'width': 64, - 'height': 110, + 'width': 90, + 'height': 130, 'dx': 0, - 'dy': 6 + 'dy': 0 }, { 'id': 'horizontal', diff --git a/src/app/avatar/data/HabboAvatarPartSets.ts b/src/avatar/data/HabboAvatarPartSets.ts similarity index 100% rename from src/app/avatar/data/HabboAvatarPartSets.ts rename to src/avatar/data/HabboAvatarPartSets.ts diff --git a/src/app/avatar/data/index.ts b/src/avatar/data/index.ts similarity index 100% rename from src/app/avatar/data/index.ts rename to src/avatar/data/index.ts diff --git a/src/app/avatar/enum/AvatarAction.ts b/src/avatar/enum/AvatarAction.ts similarity index 100% rename from src/app/avatar/enum/AvatarAction.ts rename to src/avatar/enum/AvatarAction.ts diff --git a/src/app/avatar/enum/AvatarDirectionAngle.ts b/src/avatar/enum/AvatarDirectionAngle.ts similarity index 100% rename from src/app/avatar/enum/AvatarDirectionAngle.ts rename to src/avatar/enum/AvatarDirectionAngle.ts diff --git a/src/app/avatar/enum/AvatarFigurePartType.ts b/src/avatar/enum/AvatarFigurePartType.ts similarity index 100% rename from src/app/avatar/enum/AvatarFigurePartType.ts rename to src/avatar/enum/AvatarFigurePartType.ts diff --git a/src/app/avatar/enum/AvatarScaleType.ts b/src/avatar/enum/AvatarScaleType.ts similarity index 100% rename from src/app/avatar/enum/AvatarScaleType.ts rename to src/avatar/enum/AvatarScaleType.ts diff --git a/src/app/avatar/enum/AvatarSetType.ts b/src/avatar/enum/AvatarSetType.ts similarity index 100% rename from src/app/avatar/enum/AvatarSetType.ts rename to src/avatar/enum/AvatarSetType.ts diff --git a/src/app/avatar/enum/GeometryType.ts b/src/avatar/enum/GeometryType.ts similarity index 100% rename from src/app/avatar/enum/GeometryType.ts rename to src/avatar/enum/GeometryType.ts diff --git a/src/app/avatar/enum/RenderMode.ts b/src/avatar/enum/RenderMode.ts similarity index 100% rename from src/app/avatar/enum/RenderMode.ts rename to src/avatar/enum/RenderMode.ts diff --git a/src/app/avatar/enum/index.ts b/src/avatar/enum/index.ts similarity index 100% rename from src/app/avatar/enum/index.ts rename to src/avatar/enum/index.ts diff --git a/src/app/avatar/geometry/AvatarModelGeometry.ts b/src/avatar/geometry/AvatarModelGeometry.ts similarity index 99% rename from src/app/avatar/geometry/AvatarModelGeometry.ts rename to src/avatar/geometry/AvatarModelGeometry.ts index c8542fa..29f52f0 100644 --- a/src/app/avatar/geometry/AvatarModelGeometry.ts +++ b/src/avatar/geometry/AvatarModelGeometry.ts @@ -1,4 +1,4 @@ -import { AdvancedMap } from '../../../core'; +import { AdvancedMap } from '../../core'; import { IAvatarImage } from '../IAvatarImage'; import { AvatarCanvas } from '../structure'; import { AvatarSet } from './AvatarSet'; diff --git a/src/app/avatar/geometry/AvatarSet.ts b/src/avatar/geometry/AvatarSet.ts similarity index 88% rename from src/app/avatar/geometry/AvatarSet.ts rename to src/avatar/geometry/AvatarSet.ts index 1a77958..85d73f2 100644 --- a/src/app/avatar/geometry/AvatarSet.ts +++ b/src/avatar/geometry/AvatarSet.ts @@ -1,4 +1,4 @@ -import { AdvancedMap } from '../../../core'; +import { AdvancedMap } from '../../core'; export class AvatarSet { @@ -10,11 +10,11 @@ export class AvatarSet constructor(k: any) { - this._id = k.id; - this._isMain = k.main || false; - this._avatarSets = new AdvancedMap(); - this._bodyParts = []; - this._allBodyParts = []; + this._id = k.id; + this._isMain = k.main || false; + this._avatarSets = new AdvancedMap(); + this._bodyParts = []; + this._allBodyParts = []; if(k.avatarSets && (k.avatarSets.length > 0)) { diff --git a/src/app/avatar/geometry/GeometryBodyPart.ts b/src/avatar/geometry/GeometryBodyPart.ts similarity index 93% rename from src/app/avatar/geometry/GeometryBodyPart.ts rename to src/avatar/geometry/GeometryBodyPart.ts index 8844a43..0d36387 100644 --- a/src/app/avatar/geometry/GeometryBodyPart.ts +++ b/src/avatar/geometry/GeometryBodyPart.ts @@ -1,4 +1,4 @@ -import { AdvancedMap } from '../../../core'; +import { AdvancedMap } from '../../core'; import { IAvatarImage } from '../IAvatarImage'; import { GeometryItem } from './GeometryItem'; import { Matrix4x4 } from './Matrix4x4'; @@ -16,10 +16,10 @@ export class GeometryBodyPart extends Node3D { super(parseFloat(k.x), parseFloat(k.y), parseFloat(k.z)); - this._id = k.id; - this._radius = parseFloat(k.radius); - this._parts = new AdvancedMap(); - this._dynamicParts = new AdvancedMap(); + this._id = k.id; + this._radius = parseFloat(k.radius); + this._parts = new AdvancedMap(); + this._dynamicParts = new AdvancedMap(); if(k.items && (k.items.length > 0)) { @@ -36,7 +36,7 @@ export class GeometryBodyPart extends Node3D public getDynamicParts(k: IAvatarImage): GeometryItem[] { - const existing = this._dynamicParts.getValue(k); + const existing = this._dynamicParts.getValue(k); const parts: GeometryItem[] = []; if(existing) diff --git a/src/app/avatar/geometry/GeometryItem.ts b/src/avatar/geometry/GeometryItem.ts similarity index 80% rename from src/app/avatar/geometry/GeometryItem.ts rename to src/avatar/geometry/GeometryItem.ts index 189a406..25cd818 100644 --- a/src/app/avatar/geometry/GeometryItem.ts +++ b/src/avatar/geometry/GeometryItem.ts @@ -13,14 +13,14 @@ export class GeometryItem extends Node3D { super(parseFloat(k.x), parseFloat(k.y), parseFloat(k.z)); - this._id = k.id; - this._radius = parseFloat(k.radius); - this._normal = new Vector3D(parseFloat(k.nx), parseFloat(k.ny), parseFloat(k.nz)); + this._id = k.id; + this._radius = parseFloat(k.radius); + this._normal = new Vector3D(parseFloat(k.nx), parseFloat(k.ny), parseFloat(k.nz)); this._isDoubleSided = k.double || false; - this._isDynamic = _arg_2; + this._isDynamic = _arg_2; } - public getDistance(k: Vector3D): number + public getDistance(k: Vector3D): number { const _local_2 = Math.abs(((k.z - this.transformedLocation.z) - this._radius)); const _local_3 = Math.abs(((k.z - this.transformedLocation.z) + this._radius)); diff --git a/src/app/avatar/geometry/Matrix4x4.ts b/src/avatar/geometry/Matrix4x4.ts similarity index 77% rename from src/app/avatar/geometry/Matrix4x4.ts rename to src/avatar/geometry/Matrix4x4.ts index d0914a2..24cc063 100644 --- a/src/app/avatar/geometry/Matrix4x4.ts +++ b/src/avatar/geometry/Matrix4x4.ts @@ -2,8 +2,8 @@ export class Matrix4x4 { - public static IDENTITY:Matrix4x4 = new Matrix4x4(1, 0, 0, 0, 1, 0, 0, 0, 1); - private static TOLERANS: number = 1E-18; + public static IDENTITY:Matrix4x4 = new Matrix4x4(1, 0, 0, 0, 1, 0, 0, 0, 1); + private static TOLERANS: number = 1E-18; private _data: number[]; @@ -57,14 +57,14 @@ export class Matrix4x4 public multiply(k:Matrix4x4): Matrix4x4 { - const _local_2 = (((this._data[0] * k.data[0]) + (this._data[1] * k.data[3])) + (this._data[2] * k.data[6])); - const _local_3 = (((this._data[0] * k.data[1]) + (this._data[1] * k.data[4])) + (this._data[2] * k.data[7])); - const _local_4 = (((this._data[0] * k.data[2]) + (this._data[1] * k.data[5])) + (this._data[2] * k.data[8])); - const _local_5 = (((this._data[3] * k.data[0]) + (this._data[4] * k.data[3])) + (this._data[5] * k.data[6])); - const _local_6 = (((this._data[3] * k.data[1]) + (this._data[4] * k.data[4])) + (this._data[5] * k.data[7])); - const _local_7 = (((this._data[3] * k.data[2]) + (this._data[4] * k.data[5])) + (this._data[5] * k.data[8])); - const _local_8 = (((this._data[6] * k.data[0]) + (this._data[7] * k.data[3])) + (this._data[8] * k.data[6])); - const _local_9 = (((this._data[6] * k.data[1]) + (this._data[7] * k.data[4])) + (this._data[8] * k.data[7])); + const _local_2 = (((this._data[0] * k.data[0]) + (this._data[1] * k.data[3])) + (this._data[2] * k.data[6])); + const _local_3 = (((this._data[0] * k.data[1]) + (this._data[1] * k.data[4])) + (this._data[2] * k.data[7])); + const _local_4 = (((this._data[0] * k.data[2]) + (this._data[1] * k.data[5])) + (this._data[2] * k.data[8])); + const _local_5 = (((this._data[3] * k.data[0]) + (this._data[4] * k.data[3])) + (this._data[5] * k.data[6])); + const _local_6 = (((this._data[3] * k.data[1]) + (this._data[4] * k.data[4])) + (this._data[5] * k.data[7])); + const _local_7 = (((this._data[3] * k.data[2]) + (this._data[4] * k.data[5])) + (this._data[5] * k.data[8])); + const _local_8 = (((this._data[6] * k.data[0]) + (this._data[7] * k.data[3])) + (this._data[8] * k.data[6])); + const _local_9 = (((this._data[6] * k.data[1]) + (this._data[7] * k.data[4])) + (this._data[8] * k.data[7])); const _local_10 = (((this._data[6] * k.data[2]) + (this._data[7] * k.data[5])) + (this._data[8] * k.data[8])); return new Matrix4x4(_local_2, _local_3, _local_4, _local_5, _local_6, _local_7, _local_8, _local_9, _local_10); diff --git a/src/app/avatar/geometry/Node3D.ts b/src/avatar/geometry/Node3D.ts similarity index 81% rename from src/app/avatar/geometry/Node3D.ts rename to src/avatar/geometry/Node3D.ts index 7cbcf49..310dff4 100644 --- a/src/app/avatar/geometry/Node3D.ts +++ b/src/avatar/geometry/Node3D.ts @@ -9,9 +9,9 @@ export class Node3D constructor(k: number, _arg_2: number, _arg_3: number) { - this._location = new Vector3D(k, _arg_2, _arg_3); - this._transformedLocation = new Vector3D(); - this._needsTransformation = false; + this._location = new Vector3D(k, _arg_2, _arg_3); + this._transformedLocation = new Vector3D(); + this._needsTransformation = false; if(((!(k == 0)) || (!(_arg_2 == 0))) || (!(_arg_3 == 0))) this._needsTransformation = true; } diff --git a/src/app/avatar/geometry/Vector3D.ts b/src/avatar/geometry/Vector3D.ts similarity index 100% rename from src/app/avatar/geometry/Vector3D.ts rename to src/avatar/geometry/Vector3D.ts diff --git a/src/app/avatar/geometry/index.ts b/src/avatar/geometry/index.ts similarity index 100% rename from src/app/avatar/geometry/index.ts rename to src/avatar/geometry/index.ts diff --git a/src/app/avatar/index.ts b/src/avatar/index.ts similarity index 84% rename from src/app/avatar/index.ts rename to src/avatar/index.ts index 8894c69..9ef7457 100644 --- a/src/app/avatar/index.ts +++ b/src/avatar/index.ts @@ -20,5 +20,8 @@ export * from './IAvatarFigureContainer'; export * from './IAvatarImage'; export * from './IAvatarRenderManager'; export * from './interfaces'; -export * from './PlaceHolderAvatarImage'; +export * from './interfaces/figuredata'; export * from './structure'; +export * from './structure/animation'; +export * from './structure/figure'; +export * from './structure/parts'; diff --git a/src/app/avatar/interfaces/figuredata/IFigureData.ts b/src/avatar/interfaces/figuredata/IFigureData.ts similarity index 100% rename from src/app/avatar/interfaces/figuredata/IFigureData.ts rename to src/avatar/interfaces/figuredata/IFigureData.ts diff --git a/src/app/avatar/interfaces/figuredata/IFigureDataColor.ts b/src/avatar/interfaces/figuredata/IFigureDataColor.ts similarity index 100% rename from src/app/avatar/interfaces/figuredata/IFigureDataColor.ts rename to src/avatar/interfaces/figuredata/IFigureDataColor.ts diff --git a/src/app/avatar/interfaces/figuredata/IFigureDataHiddenLayer.ts b/src/avatar/interfaces/figuredata/IFigureDataHiddenLayer.ts similarity index 100% rename from src/app/avatar/interfaces/figuredata/IFigureDataHiddenLayer.ts rename to src/avatar/interfaces/figuredata/IFigureDataHiddenLayer.ts diff --git a/src/app/avatar/interfaces/figuredata/IFigureDataPalette.ts b/src/avatar/interfaces/figuredata/IFigureDataPalette.ts similarity index 100% rename from src/app/avatar/interfaces/figuredata/IFigureDataPalette.ts rename to src/avatar/interfaces/figuredata/IFigureDataPalette.ts diff --git a/src/app/avatar/interfaces/figuredata/IFigureDataPart.ts b/src/avatar/interfaces/figuredata/IFigureDataPart.ts similarity index 100% rename from src/app/avatar/interfaces/figuredata/IFigureDataPart.ts rename to src/avatar/interfaces/figuredata/IFigureDataPart.ts diff --git a/src/app/avatar/interfaces/figuredata/IFigureDataSet.ts b/src/avatar/interfaces/figuredata/IFigureDataSet.ts similarity index 100% rename from src/app/avatar/interfaces/figuredata/IFigureDataSet.ts rename to src/avatar/interfaces/figuredata/IFigureDataSet.ts diff --git a/src/app/avatar/interfaces/figuredata/IFigureDataSetType.ts b/src/avatar/interfaces/figuredata/IFigureDataSetType.ts similarity index 100% rename from src/app/avatar/interfaces/figuredata/IFigureDataSetType.ts rename to src/avatar/interfaces/figuredata/IFigureDataSetType.ts diff --git a/src/app/avatar/interfaces/figuredata/index.ts b/src/avatar/interfaces/figuredata/index.ts similarity index 100% rename from src/app/avatar/interfaces/figuredata/index.ts rename to src/avatar/interfaces/figuredata/index.ts diff --git a/src/app/avatar/interfaces/index.ts b/src/avatar/interfaces/index.ts similarity index 100% rename from src/app/avatar/interfaces/index.ts rename to src/avatar/interfaces/index.ts diff --git a/src/app/avatar/structure/AvatarAnimationData.ts b/src/avatar/structure/AvatarAnimationData.ts similarity index 96% rename from src/app/avatar/structure/AvatarAnimationData.ts rename to src/avatar/structure/AvatarAnimationData.ts index f33ee74..81108d7 100644 --- a/src/app/avatar/structure/AvatarAnimationData.ts +++ b/src/avatar/structure/AvatarAnimationData.ts @@ -1,4 +1,4 @@ -import { AdvancedMap } from '../../../core'; +import { AdvancedMap } from '../../core'; import { IActionDefinition } from '../actions'; import { AnimationAction } from './animation'; import { IFigureSetData } from './IFigureSetData'; diff --git a/src/app/avatar/structure/AvatarCanvas.ts b/src/avatar/structure/AvatarCanvas.ts similarity index 95% rename from src/app/avatar/structure/AvatarCanvas.ts rename to src/avatar/structure/AvatarCanvas.ts index 75e1688..192db23 100644 --- a/src/app/avatar/structure/AvatarCanvas.ts +++ b/src/avatar/structure/AvatarCanvas.ts @@ -1,4 +1,4 @@ -import { Point } from '../../../core'; +import { Point } from '../../core'; import { AvatarScaleType } from '../enum'; export class AvatarCanvas diff --git a/src/app/avatar/structure/FigureSetData.ts b/src/avatar/structure/FigureSetData.ts similarity index 98% rename from src/app/avatar/structure/FigureSetData.ts rename to src/avatar/structure/FigureSetData.ts index 7f4c183..c0bf246 100644 --- a/src/app/avatar/structure/FigureSetData.ts +++ b/src/avatar/structure/FigureSetData.ts @@ -1,4 +1,4 @@ -import { AdvancedMap } from '../../../core'; +import { AdvancedMap } from '../../core'; import { IFigureData } from '../interfaces'; import { IFigurePartSet, IPalette, ISetType, Palette, SetType } from './figure'; import { IFigureSetData } from './IFigureSetData'; diff --git a/src/app/avatar/structure/IFigureSetData.ts b/src/avatar/structure/IFigureSetData.ts similarity index 100% rename from src/app/avatar/structure/IFigureSetData.ts rename to src/avatar/structure/IFigureSetData.ts diff --git a/src/app/avatar/structure/IStructureData.ts b/src/avatar/structure/IStructureData.ts similarity index 100% rename from src/app/avatar/structure/IStructureData.ts rename to src/avatar/structure/IStructureData.ts diff --git a/src/app/avatar/structure/PartSetsData.ts b/src/avatar/structure/PartSetsData.ts similarity index 98% rename from src/app/avatar/structure/PartSetsData.ts rename to src/avatar/structure/PartSetsData.ts index f9f7698..e65b317 100644 --- a/src/app/avatar/structure/PartSetsData.ts +++ b/src/avatar/structure/PartSetsData.ts @@ -1,4 +1,4 @@ -import { AdvancedMap } from '../../../core'; +import { AdvancedMap } from '../../core'; import { ActionDefinition, IActionDefinition } from '../actions'; import { IFigureSetData } from './IFigureSetData'; import { ActivePartSet, PartDefinition } from './parts'; diff --git a/src/app/avatar/structure/animation/AnimationAction.ts b/src/avatar/structure/animation/AnimationAction.ts similarity index 98% rename from src/app/avatar/structure/animation/AnimationAction.ts rename to src/avatar/structure/animation/AnimationAction.ts index 631aae7..8f0b38e 100644 --- a/src/app/avatar/structure/animation/AnimationAction.ts +++ b/src/avatar/structure/animation/AnimationAction.ts @@ -1,4 +1,4 @@ -import { AdvancedMap, Point } from '../../../../core'; +import { AdvancedMap, Point } from '../../../core'; import { AnimationActionPart } from './AnimationActionPart'; export class AnimationAction diff --git a/src/app/avatar/structure/animation/AnimationActionPart.ts b/src/avatar/structure/animation/AnimationActionPart.ts similarity index 100% rename from src/app/avatar/structure/animation/AnimationActionPart.ts rename to src/avatar/structure/animation/AnimationActionPart.ts diff --git a/src/app/avatar/structure/animation/AvatarAnimationFrame.ts b/src/avatar/structure/animation/AvatarAnimationFrame.ts similarity index 100% rename from src/app/avatar/structure/animation/AvatarAnimationFrame.ts rename to src/avatar/structure/animation/AvatarAnimationFrame.ts diff --git a/src/app/avatar/structure/animation/index.ts b/src/avatar/structure/animation/index.ts similarity index 100% rename from src/app/avatar/structure/animation/index.ts rename to src/avatar/structure/animation/index.ts diff --git a/src/app/avatar/structure/figure/FigurePart.ts b/src/avatar/structure/figure/FigurePart.ts similarity index 100% rename from src/app/avatar/structure/figure/FigurePart.ts rename to src/avatar/structure/figure/FigurePart.ts diff --git a/src/app/avatar/structure/figure/FigurePartSet.ts b/src/avatar/structure/figure/FigurePartSet.ts similarity index 100% rename from src/app/avatar/structure/figure/FigurePartSet.ts rename to src/avatar/structure/figure/FigurePartSet.ts diff --git a/src/app/avatar/structure/figure/IFigurePart.ts b/src/avatar/structure/figure/IFigurePart.ts similarity index 100% rename from src/app/avatar/structure/figure/IFigurePart.ts rename to src/avatar/structure/figure/IFigurePart.ts diff --git a/src/app/avatar/structure/figure/IFigurePartSet.ts b/src/avatar/structure/figure/IFigurePartSet.ts similarity index 100% rename from src/app/avatar/structure/figure/IFigurePartSet.ts rename to src/avatar/structure/figure/IFigurePartSet.ts diff --git a/src/app/avatar/structure/figure/IPalette.ts b/src/avatar/structure/figure/IPalette.ts similarity index 78% rename from src/app/avatar/structure/figure/IPalette.ts rename to src/avatar/structure/figure/IPalette.ts index 3c230ab..5873ddb 100644 --- a/src/app/avatar/structure/figure/IPalette.ts +++ b/src/avatar/structure/figure/IPalette.ts @@ -1,4 +1,4 @@ -import { AdvancedMap } from '../../../../core'; +import { AdvancedMap } from '../../../core'; import { IPartColor } from './IPartColor'; export interface IPalette diff --git a/src/app/avatar/structure/figure/IPartColor.ts b/src/avatar/structure/figure/IPartColor.ts similarity index 100% rename from src/app/avatar/structure/figure/IPartColor.ts rename to src/avatar/structure/figure/IPartColor.ts diff --git a/src/app/avatar/structure/figure/ISetType.ts b/src/avatar/structure/figure/ISetType.ts similarity index 87% rename from src/app/avatar/structure/figure/ISetType.ts rename to src/avatar/structure/figure/ISetType.ts index 0df7f93..b05c1e9 100644 --- a/src/app/avatar/structure/figure/ISetType.ts +++ b/src/avatar/structure/figure/ISetType.ts @@ -1,4 +1,4 @@ -import { AdvancedMap } from '../../../../core'; +import { AdvancedMap } from '../../../core'; import { IFigurePartSet } from './IFigurePartSet'; export interface ISetType diff --git a/src/app/avatar/structure/figure/Palette.ts b/src/avatar/structure/figure/Palette.ts similarity index 95% rename from src/app/avatar/structure/figure/Palette.ts rename to src/avatar/structure/figure/Palette.ts index 42da5a8..9771abf 100644 --- a/src/app/avatar/structure/figure/Palette.ts +++ b/src/avatar/structure/figure/Palette.ts @@ -1,4 +1,4 @@ -import { AdvancedMap } from '../../../../core'; +import { AdvancedMap } from '../../../core'; import { IFigureDataPalette } from '../../interfaces'; import { IPalette } from './IPalette'; import { IPartColor } from './IPartColor'; diff --git a/src/app/avatar/structure/figure/PartColor.ts b/src/avatar/structure/figure/PartColor.ts similarity index 100% rename from src/app/avatar/structure/figure/PartColor.ts rename to src/avatar/structure/figure/PartColor.ts diff --git a/src/app/avatar/structure/figure/SetType.ts b/src/avatar/structure/figure/SetType.ts similarity index 98% rename from src/app/avatar/structure/figure/SetType.ts rename to src/avatar/structure/figure/SetType.ts index ec870a9..527e041 100644 --- a/src/app/avatar/structure/figure/SetType.ts +++ b/src/avatar/structure/figure/SetType.ts @@ -1,4 +1,4 @@ -import { AdvancedMap } from '../../../../core'; +import { AdvancedMap } from '../../../core'; import { IFigureDataSetType } from '../../interfaces'; import { FigurePartSet } from './FigurePartSet'; import { IFigurePartSet } from './IFigurePartSet'; diff --git a/src/app/avatar/structure/figure/index.ts b/src/avatar/structure/figure/index.ts similarity index 100% rename from src/app/avatar/structure/figure/index.ts rename to src/avatar/structure/figure/index.ts diff --git a/src/app/avatar/structure/index.ts b/src/avatar/structure/index.ts similarity index 100% rename from src/app/avatar/structure/index.ts rename to src/avatar/structure/index.ts diff --git a/src/app/avatar/structure/parts/ActivePartSet.ts b/src/avatar/structure/parts/ActivePartSet.ts similarity index 100% rename from src/app/avatar/structure/parts/ActivePartSet.ts rename to src/avatar/structure/parts/ActivePartSet.ts diff --git a/src/app/avatar/structure/parts/PartDefinition.ts b/src/avatar/structure/parts/PartDefinition.ts similarity index 100% rename from src/app/avatar/structure/parts/PartDefinition.ts rename to src/avatar/structure/parts/PartDefinition.ts diff --git a/src/app/avatar/structure/parts/index.ts b/src/avatar/structure/parts/index.ts similarity index 100% rename from src/app/avatar/structure/parts/index.ts rename to src/avatar/structure/parts/index.ts diff --git a/src/core/configuration/ConfigurationManager.ts b/src/core/ConfigurationManager.ts similarity index 65% rename from src/core/configuration/ConfigurationManager.ts rename to src/core/ConfigurationManager.ts index fec94e3..bf5ac65 100644 --- a/src/core/configuration/ConfigurationManager.ts +++ b/src/core/ConfigurationManager.ts @@ -1,24 +1,16 @@ -import { NitroManager } from '../common'; -import { AdvancedMap, FileUtilities } from '../utils'; -import { IConfigurationManager } from './IConfigurationManager'; +import { NitroLogger } from './NitroLogger'; +import { AdvancedMap, FileUtilities } from './utils'; -export class ConfigurationManager extends NitroManager implements IConfigurationManager +export class ConfigurationManager { - private _definitions: AdvancedMap; + private static _definitions: AdvancedMap = new AdvancedMap(); - constructor() - { - super(); - - this._definitions = new AdvancedMap(); - } - - protected async onInit(): Promise + public static async init(): Promise { await this.loadConfigurationFromUrl('./config.json'); } - private async loadConfigurationFromUrl(url: string): Promise + private static async loadConfigurationFromUrl(url: string): Promise { if(!url || (url === '')) throw new Error(`Invalid configuration url: ${ url }`); @@ -30,13 +22,13 @@ export class ConfigurationManager extends NitroManager implements IConfiguration if(!this.parseConfiguration(json)) return Promise.reject('invalid_config'); } - catch(err) + catch (err) { return Promise.reject(err); } } - private parseConfiguration(data: { [index: string]: any }): boolean + private static parseConfiguration(data: { [index: string]: any }): boolean { if(!data) return false; @@ -61,13 +53,13 @@ export class ConfigurationManager extends NitroManager implements IConfiguration catch (e) { - this.logger.error(e.stack); + NitroLogger.error(e.stack); return false; } } - public interpolate(value: string, regex: RegExp = null): string + public static interpolate(value: string, regex: RegExp = null): string { if(!regex) regex = new RegExp(/\${(.*?)}/g); @@ -86,18 +78,18 @@ export class ConfigurationManager extends NitroManager implements IConfiguration return value; } - private removeInterpolateKey(value: string): string + private static removeInterpolateKey(value: string): string { return value.replace('${', '').replace('}', ''); } - public getValue(key: string, value: T = null): T + public static getValue(key: string, value: T = null): T { let existing = this._definitions.getValue(key); if(existing === undefined) { - this.logger.warn(`Missing configuration key: ${ key }`); + NitroLogger.warn(`Missing configuration key: ${ key }`); existing = value; } @@ -105,7 +97,7 @@ export class ConfigurationManager extends NitroManager implements IConfiguration return (existing as T); } - public setValue(key: string, value: string): void + public static setValue(key: string, value: string): void { this._definitions.add(key, value); } diff --git a/src/core/INitroCore.ts b/src/core/INitroCore.ts deleted file mode 100644 index f359e11..0000000 --- a/src/core/INitroCore.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { IAssetManager } from './asset'; -import { INitroManager } from './common'; -import { IConfigurationManager } from './configuration'; - -export interface INitroCore extends INitroManager -{ - configuration: IConfigurationManager; - asset: IAssetManager; -} diff --git a/src/core/NitroCore.ts b/src/core/NitroCore.ts deleted file mode 100644 index cd7c2e8..0000000 --- a/src/core/NitroCore.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { AssetManager, IAssetManager } from './asset'; -import { NitroManager } from './common'; -import { ConfigurationManager, IConfigurationManager } from './configuration'; -import { INitroCore } from './INitroCore'; - -export class NitroCore extends NitroManager implements INitroCore -{ - private _configuration: IConfigurationManager; - private _asset: IAssetManager; - - constructor() - { - super(); - - this._configuration = new ConfigurationManager(); - this._asset = new AssetManager(); - } - - protected async onInit(): Promise - { - try - { - if(this._configuration) await this._configuration.init(); - - if(this._asset) await this._asset.init(); - } - - catch(err) - { - this.logger.error(err.message || err); - } - } - - protected async onDispose(): Promise - { - if(this._asset) await this._asset.dispose(); - - if(this._configuration) await this._configuration.dispose(); - } - - public get configuration(): IConfigurationManager - { - return this._configuration; - } - - public get asset(): IAssetManager - { - return this._asset; - } -} diff --git a/src/core/NitroLogger.ts b/src/core/NitroLogger.ts new file mode 100644 index 0000000..f703a06 --- /dev/null +++ b/src/core/NitroLogger.ts @@ -0,0 +1,31 @@ +import { Format, green, red, white, yellow } from 'cli-color'; + +export class NitroLogger +{ + public static success(message: any): void + { + this.printMessage(message, green); + } + + public static log(message: any): void + { + this.printMessage(message, white); + } + + public static warn(message: any): void + { + this.printMessage(message, yellow); + } + + public static error(message: any, trace: any = null): void + { + this.printMessage(trace ?? message, red); + } + + private static printMessage(message: any, color: Format = null): void + { + process.stdout.write(` ${ color('[Nitro]') } `); + process.stdout.write(color(message)); + process.stdout.write('\n'); + } +} diff --git a/src/core/asset/AssetManager.ts b/src/core/asset/AssetManager.ts index 2ae7833..f3e889d 100644 --- a/src/core/asset/AssetManager.ts +++ b/src/core/asset/AssetManager.ts @@ -1,23 +1,14 @@ -import { NitroManager } from '../common'; import { AdvancedMap, FileUtilities, Texture } from '../utils'; -import { IAssetManager } from './IAssetManager'; +import { IGraphicAsset, IGraphicAssetCollection } from './interfaces'; import { NitroBundle } from './NitroBundle'; -import { GraphicAssetCollection, IGraphicAsset, IGraphicAssetCollection } from './utils'; +import { GraphicAssetCollection } from './utils'; -export class AssetManager extends NitroManager implements IAssetManager +export class AssetManager { - private _textures: AdvancedMap; - private _collections: AdvancedMap; + private static _textures: AdvancedMap = new AdvancedMap(); + private static _collections: AdvancedMap = new AdvancedMap(); - constructor() - { - super(); - - this._textures = new AdvancedMap(); - this._collections = new AdvancedMap(); - } - - public getTexture(name: string): Texture + public static getTexture(name: string): Texture { if(!name) return null; @@ -28,14 +19,14 @@ export class AssetManager extends NitroManager implements IAssetManager return existing; } - public setTexture(name: string, texture: Texture): void + public static setTexture(name: string, texture: Texture): void { if(!name || !texture) return; this._textures.add(name, texture); } - public getAsset(name: string): IGraphicAsset + public static getAsset(name: string): IGraphicAsset { if(!name) return null; @@ -53,7 +44,7 @@ export class AssetManager extends NitroManager implements IAssetManager return null; } - public getCollection(name: string): IGraphicAssetCollection + public static getCollection(name: string): IGraphicAssetCollection { if(!name) return null; @@ -64,7 +55,7 @@ export class AssetManager extends NitroManager implements IAssetManager return existing; } - public createCollectionFromNitroBundle(bundle: NitroBundle): IGraphicAssetCollection + public static createCollectionFromNitroBundle(bundle: NitroBundle): IGraphicAssetCollection { const collection = new GraphicAssetCollection(bundle.jsonFile, bundle.baseTexture); @@ -73,7 +64,7 @@ export class AssetManager extends NitroManager implements IAssetManager for(const [ name, texture ] of collection.textures.getKeys()) { const texture = collection.textures.getValue(name); - + this.setTexture(name, texture); } @@ -83,36 +74,27 @@ export class AssetManager extends NitroManager implements IAssetManager return collection; } - public async downloadAsset(assetUrl: string): Promise + public static async downloadAsset(assetUrl: string): Promise { return await this.downloadAssets([ assetUrl ]); } - public async downloadAssets(assetUrls: string[]): Promise + public static async downloadAssets(assetUrls: string[]): Promise { if(!assetUrls || !assetUrls.length) return false; for(const url of assetUrls) { - try - { - this.logger.log('Downloading: ' + url); - const buffer = await FileUtilities.readFileAsBuffer(url); - const bundle = await NitroBundle.from(buffer); + const buffer = await FileUtilities.readFileAsBuffer(url); + const bundle = await NitroBundle.from(buffer); - this.createCollectionFromNitroBundle(bundle); - } - - catch(err) - { - - } + this.createCollectionFromNitroBundle(bundle); } return true; } - public get collections(): AdvancedMap + public static get collections(): AdvancedMap { return this._collections; } diff --git a/src/core/asset/IAssetManager.ts b/src/core/asset/IAssetManager.ts deleted file mode 100644 index 86cafce..0000000 --- a/src/core/asset/IAssetManager.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { INitroManager } from '../common'; -import { AdvancedMap, Texture } from '../utils'; -import { NitroBundle } from './NitroBundle'; -import { IGraphicAsset, IGraphicAssetCollection } from './utils'; - -export interface IAssetManager extends INitroManager -{ - getTexture(name: string): Texture; - setTexture(name: string, texture: Texture): void; - getAsset(name: string): IGraphicAsset; - getCollection(name: string): IGraphicAssetCollection; - createCollectionFromNitroBundle(bundle: NitroBundle): IGraphicAssetCollection; - downloadAssets(urls: string[]): Promise; - downloadAsset(url: string): Promise; - collections: AdvancedMap; -} diff --git a/src/core/asset/NitroBundle.ts b/src/core/asset/NitroBundle.ts index 35c0970..0a36d54 100644 --- a/src/core/asset/NitroBundle.ts +++ b/src/core/asset/NitroBundle.ts @@ -24,7 +24,7 @@ export class NitroBundle let binary = ''; const bytes = new Uint8Array(buffer); - const len = bytes.byteLength; + const len = bytes.byteLength; for(let i = 0; i < len; i++) (binary += String.fromCharCode(bytes[i])); diff --git a/src/core/asset/index.ts b/src/core/asset/index.ts index 710adc8..071cccb 100644 --- a/src/core/asset/index.ts +++ b/src/core/asset/index.ts @@ -1,5 +1,14 @@ export * from './AssetManager'; -export * from './IAssetManager'; export * from './interfaces'; +export * from './interfaces/animation'; +export * from './interfaces/logic'; +export * from './interfaces/logic/model'; +export * from './interfaces/logic/particlesystem'; +export * from './interfaces/spritesheet'; +export * from './interfaces/visualization'; +export * from './interfaces/visualization/animation'; +export * from './interfaces/visualization/color'; +export * from './interfaces/visualization/gestures'; +export * from './interfaces/visualization/postures'; export * from './NitroBundle'; export * from './utils'; diff --git a/src/core/asset/utils/IGraphicAsset.ts b/src/core/asset/interfaces/IGraphicAsset.ts similarity index 100% rename from src/core/asset/utils/IGraphicAsset.ts rename to src/core/asset/interfaces/IGraphicAsset.ts diff --git a/src/core/asset/utils/IGraphicAssetCollection.ts b/src/core/asset/interfaces/IGraphicAssetCollection.ts similarity index 82% rename from src/core/asset/utils/IGraphicAssetCollection.ts rename to src/core/asset/interfaces/IGraphicAssetCollection.ts index 07ac503..5276f6c 100644 --- a/src/core/asset/utils/IGraphicAssetCollection.ts +++ b/src/core/asset/interfaces/IGraphicAssetCollection.ts @@ -1,5 +1,5 @@ -import { IAssetData } from '../interfaces'; -import { GraphicAssetPalette } from './GraphicAssetPalette'; +import { IAssetData } from '.'; +import { GraphicAssetPalette } from '../utils/GraphicAssetPalette'; import { IGraphicAsset } from './IGraphicAsset'; export interface IGraphicAssetCollection diff --git a/src/core/asset/interfaces/IGraphicAssetPalette.ts b/src/core/asset/interfaces/IGraphicAssetPalette.ts new file mode 100644 index 0000000..9547eeb --- /dev/null +++ b/src/core/asset/interfaces/IGraphicAssetPalette.ts @@ -0,0 +1,9 @@ +import { Texture } from '../../utils'; + +export interface IGraphicAssetPalette +{ + dispose: () => void; + applyPalette: (texture: Texture) => Texture; + primaryColor: number; + secondaryColor: number; +} diff --git a/src/core/asset/interfaces/index.ts b/src/core/asset/interfaces/index.ts index 3d5fabb..e879820 100644 --- a/src/core/asset/interfaces/index.ts +++ b/src/core/asset/interfaces/index.ts @@ -3,6 +3,15 @@ export * from './IAsset'; export * from './IAssetAlias'; export * from './IAssetData'; export * from './IAssetPalette'; +export * from './IGraphicAsset'; +export * from './IGraphicAssetCollection'; +export * from './IGraphicAssetPalette'; export * from './logic'; +export * from './logic/model'; +export * from './logic/particlesystem'; export * from './spritesheet'; export * from './visualization'; +export * from './visualization/animation'; +export * from './visualization/color'; +export * from './visualization/gestures'; +export * from './visualization/postures'; diff --git a/src/core/asset/utils/GraphicAsset.ts b/src/core/asset/utils/GraphicAsset.ts index 32c7d61..3ab7a48 100644 --- a/src/core/asset/utils/GraphicAsset.ts +++ b/src/core/asset/utils/GraphicAsset.ts @@ -1,5 +1,5 @@ import { Rectangle, Texture } from '../../utils'; -import { IGraphicAsset } from './IGraphicAsset'; +import { IGraphicAsset } from '../interfaces'; export class GraphicAsset implements IGraphicAsset { diff --git a/src/core/asset/utils/GraphicAssetCollection.ts b/src/core/asset/utils/GraphicAssetCollection.ts index 04f6bdc..05a81d2 100644 --- a/src/core/asset/utils/GraphicAssetCollection.ts +++ b/src/core/asset/utils/GraphicAssetCollection.ts @@ -1,10 +1,8 @@ import { Image } from 'canvas'; import { AdvancedMap, BaseTexture, Rectangle, Texture } from '../../utils'; -import { IAsset, IAssetData, IAssetPalette } from '../interfaces'; +import { IAsset, IAssetData, IAssetPalette, IGraphicAsset, IGraphicAssetCollection } from '../interfaces'; import { GraphicAsset } from './GraphicAsset'; import { GraphicAssetPalette } from './GraphicAssetPalette'; -import { IGraphicAsset } from './IGraphicAsset'; -import { IGraphicAssetCollection } from './IGraphicAssetCollection'; export class GraphicAssetCollection implements IGraphicAssetCollection { @@ -102,7 +100,7 @@ export class GraphicAssetCollection implements IGraphicAssetCollection Math.floor(rect.h) / resolution); } - if (spritesheetFrame.trimmed && spritesheetFrame.spriteSourceSize) + if(spritesheetFrame.trimmed && spritesheetFrame.spriteSourceSize) { trim = new Rectangle( Math.floor(spritesheetFrame.spriteSourceSize.x) / resolution, diff --git a/src/core/asset/utils/GraphicAssetPalette.ts b/src/core/asset/utils/GraphicAssetPalette.ts index 1b0a8d8..f4271f7 100644 --- a/src/core/asset/utils/GraphicAssetPalette.ts +++ b/src/core/asset/utils/GraphicAssetPalette.ts @@ -1,6 +1,7 @@ import { Texture } from '../../utils'; +import { IGraphicAssetPalette } from '../interfaces'; -export class GraphicAssetPalette +export class GraphicAssetPalette implements IGraphicAssetPalette { private _palette: [ number, number, number ][]; private _primaryColor: number; diff --git a/src/core/asset/utils/index.ts b/src/core/asset/utils/index.ts index fbad163..fbb3ae9 100644 --- a/src/core/asset/utils/index.ts +++ b/src/core/asset/utils/index.ts @@ -1,5 +1,3 @@ export * from './GraphicAsset'; export * from './GraphicAssetCollection'; export * from './GraphicAssetPalette'; -export * from './IGraphicAsset'; -export * from './IGraphicAssetCollection'; diff --git a/src/core/common/INitroManager.ts b/src/core/common/INitroManager.ts deleted file mode 100644 index 9462132..0000000 --- a/src/core/common/INitroManager.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { INitroLogger } from '../logger'; -import { IDisposable } from './disposable/IDisposable'; - -export interface INitroManager extends IDisposable -{ - init(): Promise; - logger: INitroLogger; - isLoaded: boolean; - isLoading: boolean; -} diff --git a/src/core/common/NitroManager.ts b/src/core/common/NitroManager.ts deleted file mode 100644 index 26ac232..0000000 --- a/src/core/common/NitroManager.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { INitroLogger, NitroLogger } from '../logger'; -import { Disposable } from './disposable'; -import { INitroManager } from './INitroManager'; - -export class NitroManager extends Disposable implements INitroManager -{ - private _logger: INitroLogger; - - private _isLoaded: boolean; - private _isLoading: boolean; - - constructor(logger: INitroLogger = null) - { - super(); - - this._logger = logger instanceof NitroLogger ? logger : new NitroLogger(this.constructor.name); - - this._isLoaded = false; - this._isLoading = false; - } - - public async init(): Promise - { - if(this._isLoaded || this._isLoading || this.isDisposing) return; - - this._isLoading = true; - - try - { - await this.onInit(); - } - - catch(err) - { - this.logger.error(err.message || err); - - return; - } - - this._isLoaded = true; - this._isLoading = false; - } - - protected async onInit(): Promise - { - return; - } - - public get logger(): INitroLogger - { - return this._logger; - } - - public get isLoaded(): boolean - { - return this._isLoaded; - } - - public get isLoading(): boolean - { - return this._isLoading; - } -} diff --git a/src/core/common/disposable/Disposable.ts b/src/core/common/disposable/Disposable.ts deleted file mode 100644 index 6725fdc..0000000 --- a/src/core/common/disposable/Disposable.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { IDisposable } from './IDisposable'; - -export class Disposable implements IDisposable -{ - protected _isDisposed: boolean; - protected _isDisposing: boolean; - - constructor() - { - this._isDisposed = false; - this._isDisposing = false; - } - - public async dispose(): Promise - { - if(this._isDisposed || this._isDisposing) return; - - this._isDisposing = true; - - await this.onDispose(); - - this._isDisposed = true; - this._isDisposing = false; - } - - protected async onDispose(): Promise - { - return; - } - - public get disposed(): boolean - { - return this._isDisposed; - } - - public get isDisposing(): boolean - { - return this._isDisposing; - } -} diff --git a/src/core/common/disposable/IDisposable.ts b/src/core/common/disposable/IDisposable.ts deleted file mode 100644 index 0701608..0000000 --- a/src/core/common/disposable/IDisposable.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface IDisposable -{ - dispose(): Promise; - disposed: boolean; -} diff --git a/src/core/common/disposable/index.ts b/src/core/common/disposable/index.ts deleted file mode 100644 index 2edb6e9..0000000 --- a/src/core/common/disposable/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './Disposable'; -export * from './IDisposable'; diff --git a/src/core/common/index.ts b/src/core/common/index.ts deleted file mode 100644 index 0c22eea..0000000 --- a/src/core/common/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './disposable'; -export * from './INitroManager'; -export * from './NitroManager'; diff --git a/src/core/configuration/IConfigurationManager.ts b/src/core/configuration/IConfigurationManager.ts deleted file mode 100644 index 1d18a8f..0000000 --- a/src/core/configuration/IConfigurationManager.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { INitroManager } from '../common/INitroManager'; - -export interface IConfigurationManager extends INitroManager -{ - interpolate(value: string, regex?: RegExp): string; - getValue(key: string, value?: T): T; - setValue(key: string, value: string): void; -} \ No newline at end of file diff --git a/src/core/configuration/index.ts b/src/core/configuration/index.ts deleted file mode 100644 index 7a9be69..0000000 --- a/src/core/configuration/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './ConfigurationManager'; -export * from './IConfigurationManager'; diff --git a/src/core/index.ts b/src/core/index.ts index 7c38b28..8b62075 100644 --- a/src/core/index.ts +++ b/src/core/index.ts @@ -1,7 +1,16 @@ export * from './asset'; -export * from './common'; -export * from './configuration'; -export * from './INitroCore'; -export * from './logger'; -export * from './NitroCore'; +export * from './asset/interfaces'; +export * from './asset/interfaces/animation'; +export * from './asset/interfaces/logic'; +export * from './asset/interfaces/logic/model'; +export * from './asset/interfaces/logic/particlesystem'; +export * from './asset/interfaces/spritesheet'; +export * from './asset/interfaces/visualization'; +export * from './asset/interfaces/visualization/animation'; +export * from './asset/interfaces/visualization/color'; +export * from './asset/interfaces/visualization/gestures'; +export * from './asset/interfaces/visualization/postures'; +export * from './asset/utils'; +export * from './ConfigurationManager'; +export * from './NitroLogger'; export * from './utils'; diff --git a/src/core/logger/INitroLogger.ts b/src/core/logger/INitroLogger.ts deleted file mode 100644 index 0416a50..0000000 --- a/src/core/logger/INitroLogger.ts +++ /dev/null @@ -1,8 +0,0 @@ -export interface INitroLogger -{ - log(message: any): void; - error(message: any, trace?: any): void; - warn(message: any): void; - description: string | number; - print: boolean; -} diff --git a/src/core/logger/NitroLogger.ts b/src/core/logger/NitroLogger.ts deleted file mode 100644 index a234067..0000000 --- a/src/core/logger/NitroLogger.ts +++ /dev/null @@ -1,79 +0,0 @@ -import chalk = require("chalk"); -import { INitroLogger } from './INitroLogger'; - -export class NitroLogger implements INitroLogger -{ - private static LAST_TIMESTAMP: number = Date.now(); - - private _name: string; - private _description: string | number; - private _print: boolean; - - constructor(name: string, description: string | number = null) - { - this._name = name; - this._description = description; - this._print = true; - } - - public log(message: any): void - { - this.printMessage(message, chalk.green); - } - - public error(message: any, trace: any = null): void - { - this.printMessage(trace || message, chalk.red); - } - - public warn(message: any): void - { - this.printMessage(message, chalk.yellow); - } - - private printMessage(message: any, color: Function = null): void - { - if(!this._print) return; - - process.stdout.write(` ${ color(`[Nitro]`) } `); - - if(this._name !== null) process.stdout.write(chalk.cyan(`[${ this._name }] `)); - - if(this._description !== null) process.stdout.write(chalk.gray(`[${ this._description }] `)); - - process.stdout.write(color(message)); - - this.printTimestamp(); - - process.stdout.write(`\n`); - } - - private printTimestamp(): void - { - const now = Date.now(); - - process.stdout.write(chalk.gray(` +${ now - NitroLogger.LAST_TIMESTAMP || 0 }ms`)); - - NitroLogger.LAST_TIMESTAMP = now; - } - - public get description(): string | number - { - return this._description; - } - - public set description(description: string | number) - { - this._description = description; - } - - public get print(): boolean - { - return this._print; - } - - public set print(flag: boolean) - { - this._print = flag; - } -} diff --git a/src/core/logger/index.ts b/src/core/logger/index.ts deleted file mode 100644 index 147aa16..0000000 --- a/src/core/logger/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './INitroLogger'; -export * from './NitroLogger'; diff --git a/src/core/utils/AdvancedMap.ts b/src/core/utils/AdvancedMap.ts index f7e883b..37a0f58 100644 --- a/src/core/utils/AdvancedMap.ts +++ b/src/core/utils/AdvancedMap.ts @@ -7,10 +7,10 @@ constructor(map: Map = null) { - this._length = 0; - this._dictionary = new Map(); - this._array = []; - this._keys = []; + this._length = 0; + this._dictionary = new Map(); + this._array = []; + this._keys = []; if(map) for(const [ key, value ] of map.entries()) this.add(key, value); } @@ -34,18 +34,18 @@ this._dictionary = null; } - this._length = 0; - this._array = null; - this._keys = null; + this._length = 0; + this._array = null; + this._keys = null; } public reset(): void { for(const key of this._dictionary.keys()) this._dictionary.delete(key); - this._length = 0; - this._array = []; - this._keys = []; + this._length = 0; + this._array = []; + this._keys = []; } public unshift(key: T, value: U): boolean @@ -68,8 +68,8 @@ this._dictionary.set(key, value); - this._array[this._length] = value; - this._keys[this._length] = key; + this._array[this._length] = value; + this._keys[this._length] = key; this._length++; diff --git a/src/core/utils/CanvasUtilities.ts b/src/core/utils/CanvasUtilities.ts index 1d79f05..84efa03 100644 --- a/src/core/utils/CanvasUtilities.ts +++ b/src/core/utils/CanvasUtilities.ts @@ -15,31 +15,31 @@ export class CanvasUtilities const ctx = canvas.getContext('2d'); const pixels = ctx.getImageData(0, 0, canvas.width, canvas.height); const length = pixels.data.length; - + for(let i = 0; i < length; i += 4) { if(pixels.data[i+3] !== 0) { const x = (i / 4) % canvas.width; const y = ~~((i / 4) / canvas.width); - + if(bounds.top === null) bounds.top = y; - - if(bounds.left === null) bounds.left = x; - else if (x < bounds.left) bounds.left = x; - - if(bounds.right === null) bounds.right = x; + + if(bounds.left === null) bounds.left = x; + else if(x < bounds.left) bounds.left = x; + + if(bounds.right === null) bounds.right = x; else if(bounds.right < x) bounds.right = x; - + if(bounds.bottom === null) bounds.bottom = y; - else if (bounds.bottom < y) bounds.bottom = y; + else if(bounds.bottom < y) bounds.bottom = y; } } - + const trimHeight = (bounds.bottom - bounds.top); const trimWidth = (bounds.right - bounds.left); const trimmed = ctx.getImageData(bounds.left, bounds.top, trimWidth, trimHeight); - + canvas.width = trimWidth; canvas.height = trimHeight; ctx.putImageData(trimmed, 0, 0); diff --git a/src/core/utils/FileUtilities.ts b/src/core/utils/FileUtilities.ts index 7bf3a38..ed05539 100644 --- a/src/core/utils/FileUtilities.ts +++ b/src/core/utils/FileUtilities.ts @@ -1,6 +1,7 @@ import { readFile } from 'fs'; import fetch from 'node-fetch'; import { promisify } from 'util'; +import { NitroLogger } from '../NitroLogger'; import { File } from './File'; const readFileAsync = promisify(readFile); @@ -27,49 +28,43 @@ export class FileUtilities { if(!url) return null; - let content: Buffer = null; + NitroLogger.warn(`Loading: ${ url }`); if(url.startsWith('//')) url = ('https:' + url); if(url.startsWith('http')) { const data = await fetch(url); + + if(data.status !== 200) throw new Error(`File not found: ${ url }`); + const arrayBuffer = await data.arrayBuffer(); - if(data.headers.get('Content-Type') !== 'application/octet-stream') return; + if(data.headers.get('Content-Type') !== 'application/octet-stream') throw new Error(`Invalid content-type: ${ url }`); - if(arrayBuffer) content = Buffer.from(arrayBuffer); - } - else - { - content = await readFileAsync(url); + return Buffer.from(arrayBuffer); } - return content; + return await readFileAsync(url); } public static async readFileAsString(url: string): Promise { - if(!url) return null; - - let content = null; + if(!url || !url.length) return null; if(url.startsWith('//')) url = ('https:' + url); if(url.startsWith('http')) { const data = await fetch(url); - if(data.status === 404) return null; - if(data) content = await data.text(); - } - else - { - const data = await readFileAsync(url); + if(data.status !== 200) throw new Error(`File not found: ${ url }`); - content = data.toString('utf-8'); + return await data.text(); } - return content; + const data = await readFileAsync(url); + + return data.toString('utf-8'); } } diff --git a/src/core/utils/Point.ts b/src/core/utils/Point.ts index c0d5066..face0ea 100644 --- a/src/core/utils/Point.ts +++ b/src/core/utils/Point.ts @@ -23,14 +23,14 @@ export class Point { this.x = x; this.y = y; - + return this; } public add(point: Point): Point { const clone = this.clone(); - + clone.x += point.x; clone.y += point.y; diff --git a/src/core/utils/Rectangle.ts b/src/core/utils/Rectangle.ts index cc85ea8..8bd98ef 100644 --- a/src/core/utils/Rectangle.ts +++ b/src/core/utils/Rectangle.ts @@ -34,7 +34,7 @@ export class Rectangle rectangle.y = this.y; rectangle.width = this.width; rectangle.height = this.height; - + return rectangle; } @@ -102,7 +102,7 @@ export class Rectangle return this; } - + public get left(): number { return this.x; diff --git a/src/core/utils/Texture.ts b/src/core/utils/Texture.ts index 817611c..10e3071 100644 --- a/src/core/utils/Texture.ts +++ b/src/core/utils/Texture.ts @@ -103,7 +103,7 @@ export class Texture Math.floor(width * this._baseTexture.resolution), Math.floor(height * this._baseTexture.resolution) ); - + ctx.globalCompositeOperation = 'destination-atop'; ctx.drawImage( diff --git a/src/main.ts b/src/main.ts index 185cbe6..83fa90b 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,21 +1,37 @@ -import { Application } from './app'; -import { NitroCore } from './core'; -const core = new NitroCore(); -const instance = new Application(core); +import * as dotenv from 'dotenv'; +import express from 'express'; +import { AvatarRenderManager } from './avatar'; +import { ConfigurationManager, NitroLogger } from './core'; +import { HttpRouter } from './router'; + +dotenv.config(); async function init(): Promise { try { - await instance.init(); + NitroLogger.success('Starting Nitro Imager'); + + await ConfigurationManager.init(); + await AvatarRenderManager.init(); + + const router = express(); + + router.get('/', HttpRouter); + + const host = (process.env.API_HOST as string); + const port = parseInt(process.env.API_PORT); + + router.listen(port, host, () => + { + NitroLogger.success(`Server Started ${ host }:${ port }`); + }); } - catch(err) + catch (err) { - console.error(err.message || err); - - core.dispose(); + NitroLogger.error(err.message || err); } } diff --git a/src/app/router/habbo-imaging/handlers/HabboImagingRouterGet.ts b/src/router/HttpRouter.ts similarity index 64% rename from src/app/router/habbo-imaging/handlers/HabboImagingRouterGet.ts rename to src/router/HttpRouter.ts index ce810e6..82e132a 100644 --- a/src/app/router/habbo-imaging/handlers/HabboImagingRouterGet.ts +++ b/src/router/HttpRouter.ts @@ -1,13 +1,12 @@ import { Canvas, createCanvas } from 'canvas'; import { Request, Response } from 'express'; import { createWriteStream, writeFile, WriteStream } from 'fs'; -import * as GIFEncoder from 'gifencoder'; -import { File, FileUtilities, Point } from '../../../../core'; -import { Application } from '../../../Application'; -import { AvatarScaleType, IAvatarImage } from '../../../avatar'; +import GIFEncoder from 'gifencoder'; +import { AvatarRenderManager, AvatarScaleType, IAvatarImage } from '../avatar'; +import { File, FileUtilities, NitroLogger, Point } from '../core'; import { BuildFigureOptionsRequest, BuildFigureOptionsStringRequest, ProcessActionRequest, ProcessDanceRequest, ProcessDirectionRequest, ProcessEffectRequest, ProcessGestureRequest, RequestQuery } from './utils'; -export const HabboImagingRouterGet = async (request: Request, response: Response) => +export const HttpRouter = async (request: Request, response: Response) => { const query = request.query; @@ -19,7 +18,7 @@ export const HabboImagingRouterGet = async (request: Request 0) { - if(!Application.instance.avatar.effectManager.isAvatarEffectReady(buildOptions.effect)) + if(!AvatarRenderManager.instance.effectManager.isAvatarEffectReady(buildOptions.effect)) { - await Application.instance.avatar.effectManager.downloadAvatarEffect(buildOptions.effect); + await AvatarRenderManager.instance.effectManager.downloadAvatarEffect(buildOptions.effect); } } - - const avatar = await Application.instance.avatar.createAvatarImage(buildOptions.figure, AvatarScaleType.LARGE, 'M'); - const avatarCanvas = Application.instance.avatar.structure.getCanvas(avatar.getScale(), avatar.mainAction.definition.geometryType); + + const avatar = await AvatarRenderManager.instance.createAvatarImage(buildOptions.figure, AvatarScaleType.LARGE, 'M'); + const avatarCanvas = AvatarRenderManager.instance.structure.getCanvas(avatar.getScale(), avatar.mainAction.definition.geometryType); ProcessDirectionRequest(query, avatar); @@ -57,8 +56,6 @@ export const HabboImagingRouterGet = async (request: Request {}); + writeFile(saveFile.path, buffer, () => + {}); return; } @@ -168,29 +184,27 @@ export const HabboImagingRouterGet = async (request: Request 7) direction = (direction - 8); - if(direction > 7) direction = (direction - 8); - - const assetName = ((((((avatar.getScale() + "_") + sprite.member) + "_") + direction) + "_") + frame); + const assetName = ((((((avatar.getScale() + '_') + sprite.member) + '_') + direction) + '_') + frame); const asset = avatar.getAsset(assetName); if(!asset) continue; - + const texture = asset.texture; - let x = ((canvasOffset.x - (1 * asset.offsetX)) + offsetX); - let y = ((canvasOffset.y - (1 * asset.offsetY)) + offsetY); + const x = ((((canvas.width / 2) + asset.offsetX) - (64 / 2)) + offsetX) + offset.x; + const y = ((canvas.height + asset.offsetY) + offsetY) + offset.y; ctx.save(); if(sprite.ink === 33) ctx.globalCompositeOperation = 'lighter'; - - ctx.transform(1, 0, 0, 1, (x - avatarOffset.x), (y - avatarOffset.y)); - ctx.drawImage(texture.drawableCanvas, 0, 0, texture.width, texture.height); + + ctx.drawImage(texture.drawableCanvas, x, y, texture.width, texture.height); ctx.restore(); } diff --git a/src/router/index.ts b/src/router/index.ts new file mode 100644 index 0000000..d69f263 --- /dev/null +++ b/src/router/index.ts @@ -0,0 +1,7 @@ +export * from './HttpRouter'; +export * from './utils'; +export * from './utils/action'; +export * from './utils/dance'; +export * from './utils/direction'; +export * from './utils/effect'; +export * from './utils/gesture'; diff --git a/src/app/router/habbo-imaging/handlers/utils/BuildFigureOptionsRequest.ts b/src/router/utils/BuildFigureOptionsRequest.ts similarity index 99% rename from src/app/router/habbo-imaging/handlers/utils/BuildFigureOptionsRequest.ts rename to src/router/utils/BuildFigureOptionsRequest.ts index 7db9b25..ff3889c 100644 --- a/src/app/router/habbo-imaging/handlers/utils/BuildFigureOptionsRequest.ts +++ b/src/router/utils/BuildFigureOptionsRequest.ts @@ -39,4 +39,4 @@ export const BuildFigureOptionsRequest = (query: RequestQuery) => frameNumber, imageFormat } as IFigureBuildOptions; -} +}; diff --git a/src/app/router/habbo-imaging/handlers/utils/BuildFigureOptionsStringRequest.ts b/src/router/utils/BuildFigureOptionsStringRequest.ts similarity index 99% rename from src/app/router/habbo-imaging/handlers/utils/BuildFigureOptionsStringRequest.ts rename to src/router/utils/BuildFigureOptionsStringRequest.ts index 6a040d8..690fc9f 100644 --- a/src/app/router/habbo-imaging/handlers/utils/BuildFigureOptionsStringRequest.ts +++ b/src/router/utils/BuildFigureOptionsStringRequest.ts @@ -19,4 +19,4 @@ export const BuildFigureOptionsStringRequest = (buildOptions: IFigureBuildOption if(buildOptions.imageFormat) buildString += PART_SEPARATOR + 'f-' + buildOptions.imageFormat; return buildString; -} +}; diff --git a/src/app/router/habbo-imaging/handlers/utils/GetActionRequest.ts b/src/router/utils/GetActionRequest.ts similarity index 98% rename from src/app/router/habbo-imaging/handlers/utils/GetActionRequest.ts rename to src/router/utils/GetActionRequest.ts index 609be72..49b09e9 100644 --- a/src/app/router/habbo-imaging/handlers/utils/GetActionRequest.ts +++ b/src/router/utils/GetActionRequest.ts @@ -3,4 +3,4 @@ import { RequestQuery } from './RequestQuery'; export const GetActionRequest = (query: RequestQuery) => { return ((query.action && query.action.length) ? query.action : null); -} +}; diff --git a/src/app/router/habbo-imaging/handlers/utils/GetDanceRequest.ts b/src/router/utils/GetDanceRequest.ts similarity index 98% rename from src/app/router/habbo-imaging/handlers/utils/GetDanceRequest.ts rename to src/router/utils/GetDanceRequest.ts index d211b51..0adcbf1 100644 --- a/src/app/router/habbo-imaging/handlers/utils/GetDanceRequest.ts +++ b/src/router/utils/GetDanceRequest.ts @@ -3,4 +3,4 @@ import { RequestQuery } from './RequestQuery'; export const GetDanceRequest = (query: RequestQuery) => { return ((query.dance && query.dance.length) ? parseInt(query.dance) : null); -} +}; diff --git a/src/app/router/habbo-imaging/handlers/utils/GetDirectionRequest.ts b/src/router/utils/GetDirectionRequest.ts similarity index 98% rename from src/app/router/habbo-imaging/handlers/utils/GetDirectionRequest.ts rename to src/router/utils/GetDirectionRequest.ts index b26dac1..1a0bf2b 100644 --- a/src/app/router/habbo-imaging/handlers/utils/GetDirectionRequest.ts +++ b/src/router/utils/GetDirectionRequest.ts @@ -3,4 +3,4 @@ import { RequestQuery } from './RequestQuery'; export const GetDirectionRequest = (query: RequestQuery) => { return ((query.direction && query.direction.length) ? parseInt(query.direction) : null); -} +}; diff --git a/src/app/router/habbo-imaging/handlers/utils/GetEffectRequest.ts b/src/router/utils/GetEffectRequest.ts similarity index 98% rename from src/app/router/habbo-imaging/handlers/utils/GetEffectRequest.ts rename to src/router/utils/GetEffectRequest.ts index d13c0a0..dd6447c 100644 --- a/src/app/router/habbo-imaging/handlers/utils/GetEffectRequest.ts +++ b/src/router/utils/GetEffectRequest.ts @@ -3,4 +3,4 @@ import { RequestQuery } from './RequestQuery'; export const GetEffectRequest = (query: RequestQuery) => { return ((query.effect && query.effect.length) ? parseInt(query.effect) : null); -} +}; diff --git a/src/app/router/habbo-imaging/handlers/utils/GetFigureRequest.ts b/src/router/utils/GetFigureRequest.ts similarity index 80% rename from src/app/router/habbo-imaging/handlers/utils/GetFigureRequest.ts rename to src/router/utils/GetFigureRequest.ts index 368adab..c922007 100644 --- a/src/app/router/habbo-imaging/handlers/utils/GetFigureRequest.ts +++ b/src/router/utils/GetFigureRequest.ts @@ -1,4 +1,4 @@ -import { AvatarRenderManager } from '../../../../avatar'; +import { AvatarRenderManager } from '../../avatar'; import { RequestQuery } from './RequestQuery'; export const GetFigureRequest = (query: RequestQuery) => @@ -8,4 +8,4 @@ export const GetFigureRequest = (query: RequestQuery) => if(query.figure && query.figure.length) figure = query.figure; return figure; -} +}; diff --git a/src/app/router/habbo-imaging/handlers/utils/GetFrameNumberRequest.ts b/src/router/utils/GetFrameNumberRequest.ts similarity index 98% rename from src/app/router/habbo-imaging/handlers/utils/GetFrameNumberRequest.ts rename to src/router/utils/GetFrameNumberRequest.ts index 4722bf3..53092d8 100644 --- a/src/app/router/habbo-imaging/handlers/utils/GetFrameNumberRequest.ts +++ b/src/router/utils/GetFrameNumberRequest.ts @@ -3,4 +3,4 @@ import { RequestQuery } from './RequestQuery'; export const GetFrameNumberRequest = (query: RequestQuery) => { return ((query.frame_num && query.frame_num.length) ? parseInt(query.frame_num) : -1); -} +}; diff --git a/src/app/router/habbo-imaging/handlers/utils/GetGestureRequest.ts b/src/router/utils/GetGestureRequest.ts similarity index 98% rename from src/app/router/habbo-imaging/handlers/utils/GetGestureRequest.ts rename to src/router/utils/GetGestureRequest.ts index ac26b28..75fb73f 100644 --- a/src/app/router/habbo-imaging/handlers/utils/GetGestureRequest.ts +++ b/src/router/utils/GetGestureRequest.ts @@ -3,4 +3,4 @@ import { RequestQuery } from './RequestQuery'; export const GetGestureRequest = (query: RequestQuery) => { return ((query.gesture && query.gesture.length) ? query.gesture : null); -} +}; diff --git a/src/app/router/habbo-imaging/handlers/utils/GetHeadDirectionRequest.ts b/src/router/utils/GetHeadDirectionRequest.ts similarity index 98% rename from src/app/router/habbo-imaging/handlers/utils/GetHeadDirectionRequest.ts rename to src/router/utils/GetHeadDirectionRequest.ts index f20127f..2e8e279 100644 --- a/src/app/router/habbo-imaging/handlers/utils/GetHeadDirectionRequest.ts +++ b/src/router/utils/GetHeadDirectionRequest.ts @@ -3,4 +3,4 @@ import { RequestQuery } from './RequestQuery'; export const GetHeadDirectionRequest = (query: RequestQuery) => { return ((query.head_direction && query.head_direction.length) ? parseInt(query.head_direction) : null); -} +}; diff --git a/src/app/router/habbo-imaging/handlers/utils/GetImageFormatRequest.ts b/src/router/utils/GetImageFormatRequest.ts similarity index 98% rename from src/app/router/habbo-imaging/handlers/utils/GetImageFormatRequest.ts rename to src/router/utils/GetImageFormatRequest.ts index 53705f5..079d9cf 100644 --- a/src/app/router/habbo-imaging/handlers/utils/GetImageFormatRequest.ts +++ b/src/router/utils/GetImageFormatRequest.ts @@ -5,4 +5,4 @@ export const GetImageFormatRequest = (query: RequestQuery) => if(query.img_format === 'gif') return 'gif'; return 'png'; -} +}; diff --git a/src/app/router/habbo-imaging/handlers/utils/GetScaleRequest.ts b/src/router/utils/GetScaleRequest.ts similarity index 71% rename from src/app/router/habbo-imaging/handlers/utils/GetScaleRequest.ts rename to src/router/utils/GetScaleRequest.ts index 1e8bc29..32e4c7d 100644 --- a/src/app/router/habbo-imaging/handlers/utils/GetScaleRequest.ts +++ b/src/router/utils/GetScaleRequest.ts @@ -1,7 +1,7 @@ -import { AvatarScaleType } from '../../../../avatar'; +import { AvatarScaleType } from '../../avatar'; import { RequestQuery } from './RequestQuery'; export const GetScaleRequest = (query: RequestQuery) => { return AvatarScaleType.LARGE; -} +}; diff --git a/src/app/router/habbo-imaging/handlers/utils/GetSetTypeRequest.ts b/src/router/utils/GetSetTypeRequest.ts similarity index 82% rename from src/app/router/habbo-imaging/handlers/utils/GetSetTypeRequest.ts rename to src/router/utils/GetSetTypeRequest.ts index a7f76e6..6679e40 100644 --- a/src/app/router/habbo-imaging/handlers/utils/GetSetTypeRequest.ts +++ b/src/router/utils/GetSetTypeRequest.ts @@ -1,4 +1,4 @@ -import { AvatarSetType } from '../../../../avatar'; +import { AvatarSetType } from '../../avatar'; import { RequestQuery } from './RequestQuery'; export const GetSetTypeRequest = (query: RequestQuery) => @@ -8,4 +8,4 @@ export const GetSetTypeRequest = (query: RequestQuery) => if(query.headonly && query.headonly == '1') setType = AvatarSetType.HEAD; return setType; -} +}; diff --git a/src/app/router/habbo-imaging/handlers/utils/GetSizeRequest.ts b/src/router/utils/GetSizeRequest.ts similarity index 98% rename from src/app/router/habbo-imaging/handlers/utils/GetSizeRequest.ts rename to src/router/utils/GetSizeRequest.ts index cd9c110..e66f832 100644 --- a/src/app/router/habbo-imaging/handlers/utils/GetSizeRequest.ts +++ b/src/router/utils/GetSizeRequest.ts @@ -7,4 +7,4 @@ export const GetSizeRequest = (query: RequestQuery) => if(query.size === 'l') return 2; return 1; -} +}; diff --git a/src/app/router/habbo-imaging/handlers/utils/IFigureBuildOptions.ts b/src/router/utils/IFigureBuildOptions.ts similarity index 100% rename from src/app/router/habbo-imaging/handlers/utils/IFigureBuildOptions.ts rename to src/router/utils/IFigureBuildOptions.ts diff --git a/src/app/router/habbo-imaging/handlers/utils/RequestQuery.ts b/src/router/utils/RequestQuery.ts similarity index 100% rename from src/app/router/habbo-imaging/handlers/utils/RequestQuery.ts rename to src/router/utils/RequestQuery.ts diff --git a/src/app/router/habbo-imaging/handlers/utils/action/ProcessActionRequest.ts b/src/router/utils/action/ProcessActionRequest.ts similarity index 92% rename from src/app/router/habbo-imaging/handlers/utils/action/ProcessActionRequest.ts rename to src/router/utils/action/ProcessActionRequest.ts index 52fe6dd..787fb87 100644 --- a/src/app/router/habbo-imaging/handlers/utils/action/ProcessActionRequest.ts +++ b/src/router/utils/action/ProcessActionRequest.ts @@ -1,4 +1,4 @@ -import { IAvatarImage } from '../../../../../avatar'; +import { IAvatarImage } from '../../../avatar'; import { GetActionRequest } from '../GetActionRequest'; import { RequestQuery } from '../RequestQuery'; import { ProcessCarryAction } from './ProcessCarryAction'; @@ -17,4 +17,4 @@ export const ProcessActionRequest = (query: RequestQuery, avatar: IAvatarImage) if(ProcessCarryAction(action, avatar)) continue; } -} +}; diff --git a/src/app/router/habbo-imaging/handlers/utils/action/ProcessCarryAction.ts b/src/router/utils/action/ProcessCarryAction.ts similarity index 92% rename from src/app/router/habbo-imaging/handlers/utils/action/ProcessCarryAction.ts rename to src/router/utils/action/ProcessCarryAction.ts index 20692e0..65d6ad7 100644 --- a/src/app/router/habbo-imaging/handlers/utils/action/ProcessCarryAction.ts +++ b/src/router/utils/action/ProcessCarryAction.ts @@ -1,4 +1,4 @@ -import { AvatarAction, IAvatarImage } from '../../../../../avatar'; +import { AvatarAction, IAvatarImage } from '../../../avatar'; export const ProcessCarryAction = (action: string, avatar: IAvatarImage) => { @@ -31,4 +31,4 @@ export const ProcessCarryAction = (action: string, avatar: IAvatarImage) => if(carryType && carryType.length && param && param.length) avatar.appendAction(carryType, param); return didSet; -} +}; diff --git a/src/app/router/habbo-imaging/handlers/utils/action/ProcessExpressionAction.ts b/src/router/utils/action/ProcessExpressionAction.ts similarity index 94% rename from src/app/router/habbo-imaging/handlers/utils/action/ProcessExpressionAction.ts rename to src/router/utils/action/ProcessExpressionAction.ts index 3166d9b..8adb960 100644 --- a/src/app/router/habbo-imaging/handlers/utils/action/ProcessExpressionAction.ts +++ b/src/router/utils/action/ProcessExpressionAction.ts @@ -1,4 +1,4 @@ -import { AvatarAction, IAvatarImage } from '../../../../../avatar'; +import { AvatarAction, IAvatarImage } from '../../../avatar'; export const ProcessExpressionAction = (action: string, avatar: IAvatarImage) => { @@ -37,4 +37,4 @@ export const ProcessExpressionAction = (action: string, avatar: IAvatarImage) => if(expression && expression.length) avatar.appendAction(expression); return didSet; -} +}; diff --git a/src/app/router/habbo-imaging/handlers/utils/action/ProcessPostureAction.ts b/src/router/utils/action/ProcessPostureAction.ts similarity index 92% rename from src/app/router/habbo-imaging/handlers/utils/action/ProcessPostureAction.ts rename to src/router/utils/action/ProcessPostureAction.ts index 581368a..718e8f0 100644 --- a/src/app/router/habbo-imaging/handlers/utils/action/ProcessPostureAction.ts +++ b/src/router/utils/action/ProcessPostureAction.ts @@ -1,4 +1,4 @@ -import { AvatarAction, IAvatarImage } from '../../../../../avatar'; +import { AvatarAction, IAvatarImage } from '../../../avatar'; export const ProcessPostureAction = (action: string, avatar: IAvatarImage) => { @@ -32,4 +32,4 @@ export const ProcessPostureAction = (action: string, avatar: IAvatarImage) => if(posture && posture.length) avatar.appendAction(AvatarAction.POSTURE, posture, param); return didSet; -} +}; diff --git a/src/app/router/habbo-imaging/handlers/utils/action/index.ts b/src/router/utils/action/index.ts similarity index 100% rename from src/app/router/habbo-imaging/handlers/utils/action/index.ts rename to src/router/utils/action/index.ts diff --git a/src/app/router/habbo-imaging/handlers/utils/dance/ProcessDanceRequest.ts b/src/router/utils/dance/ProcessDanceRequest.ts similarity index 86% rename from src/app/router/habbo-imaging/handlers/utils/dance/ProcessDanceRequest.ts rename to src/router/utils/dance/ProcessDanceRequest.ts index 8a677da..6a52552 100644 --- a/src/app/router/habbo-imaging/handlers/utils/dance/ProcessDanceRequest.ts +++ b/src/router/utils/dance/ProcessDanceRequest.ts @@ -1,4 +1,4 @@ -import { AvatarAction, IAvatarImage } from '../../../../../avatar'; +import { AvatarAction, IAvatarImage } from '../../../avatar'; import { GetDanceRequest } from '../GetDanceRequest'; import { RequestQuery } from '../RequestQuery'; @@ -17,4 +17,4 @@ export const ProcessDanceRequest = (query: RequestQuery, avatar: IAvatarImage) = avatar.appendAction(AvatarAction.DANCE, dance); return; } -} +}; diff --git a/src/app/router/habbo-imaging/handlers/utils/dance/index.ts b/src/router/utils/dance/index.ts similarity index 100% rename from src/app/router/habbo-imaging/handlers/utils/dance/index.ts rename to src/router/utils/dance/index.ts diff --git a/src/app/router/habbo-imaging/handlers/utils/direction/ProcessDirectionRequest.ts b/src/router/utils/direction/ProcessDirectionRequest.ts similarity index 87% rename from src/app/router/habbo-imaging/handlers/utils/direction/ProcessDirectionRequest.ts rename to src/router/utils/direction/ProcessDirectionRequest.ts index 20fc1cf..75cf9df 100644 --- a/src/app/router/habbo-imaging/handlers/utils/direction/ProcessDirectionRequest.ts +++ b/src/router/utils/direction/ProcessDirectionRequest.ts @@ -1,4 +1,4 @@ -import { AvatarSetType, IAvatarImage } from '../../../../../avatar'; +import { AvatarSetType, IAvatarImage } from '../../../avatar'; import { GetDirectionRequest } from '../GetDirectionRequest'; import { GetHeadDirectionRequest } from '../GetHeadDirectionRequest'; import { RequestQuery } from '../RequestQuery'; @@ -10,4 +10,4 @@ export const ProcessDirectionRequest = (query: RequestQuery, avatar: IAvatarImag avatar.setDirection(AvatarSetType.FULL, direction); avatar.setDirection(AvatarSetType.HEAD, headDirection); -} +}; diff --git a/src/app/router/habbo-imaging/handlers/utils/direction/index.ts b/src/router/utils/direction/index.ts similarity index 100% rename from src/app/router/habbo-imaging/handlers/utils/direction/index.ts rename to src/router/utils/direction/index.ts diff --git a/src/app/router/habbo-imaging/handlers/utils/effect/ProcessEffectRequest.ts b/src/router/utils/effect/ProcessEffectRequest.ts similarity index 82% rename from src/app/router/habbo-imaging/handlers/utils/effect/ProcessEffectRequest.ts rename to src/router/utils/effect/ProcessEffectRequest.ts index 2f3aa52..712b96d 100644 --- a/src/app/router/habbo-imaging/handlers/utils/effect/ProcessEffectRequest.ts +++ b/src/router/utils/effect/ProcessEffectRequest.ts @@ -1,4 +1,4 @@ -import { AvatarAction, IAvatarImage } from '../../../../../avatar'; +import { AvatarAction, IAvatarImage } from '../../../avatar'; import { GetEffectRequest } from '../GetEffectRequest'; import { RequestQuery } from '../RequestQuery'; @@ -9,4 +9,4 @@ export const ProcessEffectRequest = (query: RequestQuery, avatar: IAvatarImage) if(!effect) return; avatar.appendAction(AvatarAction.EFFECT, effect); -} +}; diff --git a/src/app/router/habbo-imaging/handlers/utils/effect/index.ts b/src/router/utils/effect/index.ts similarity index 100% rename from src/app/router/habbo-imaging/handlers/utils/effect/index.ts rename to src/router/utils/effect/index.ts diff --git a/src/app/router/habbo-imaging/handlers/utils/gesture/ProcessGestureRequest.ts b/src/router/utils/gesture/ProcessGestureRequest.ts similarity index 91% rename from src/app/router/habbo-imaging/handlers/utils/gesture/ProcessGestureRequest.ts rename to src/router/utils/gesture/ProcessGestureRequest.ts index 06309ae..2389b92 100644 --- a/src/app/router/habbo-imaging/handlers/utils/gesture/ProcessGestureRequest.ts +++ b/src/router/utils/gesture/ProcessGestureRequest.ts @@ -1,4 +1,4 @@ -import { AvatarAction, IAvatarImage } from '../../../../../avatar'; +import { AvatarAction, IAvatarImage } from '../../../avatar'; import { GetGestureRequest } from '../GetGestureRequest'; import { RequestQuery } from '../RequestQuery'; @@ -24,4 +24,4 @@ export const ProcessGestureRequest = (query: RequestQuery, avatar: IAvatarImage) avatar.appendAction(AvatarAction.SLEEP); return; } -} +}; diff --git a/src/app/router/habbo-imaging/handlers/utils/gesture/index.ts b/src/router/utils/gesture/index.ts similarity index 100% rename from src/app/router/habbo-imaging/handlers/utils/gesture/index.ts rename to src/router/utils/gesture/index.ts diff --git a/src/app/router/habbo-imaging/handlers/utils/index.ts b/src/router/utils/index.ts similarity index 100% rename from src/app/router/habbo-imaging/handlers/utils/index.ts rename to src/router/utils/index.ts diff --git a/tsconfig.json b/tsconfig.json index 7a81293..b37283e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,7 @@ { "compilerOptions": { - "module": "commonjs", + "module": "CommonJS", + "esModuleInterop": true, "declaration": false, "noImplicitAny": false, "noUnusedLocals": false, @@ -9,11 +10,12 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "resolveJsonModule": true, - "target": "es6", + "target": "ES6", "sourceMap": false, "allowJs": false, "baseUrl": "./src", - "outDir": "./dist" + "outDir": "./dist", + "moduleResolution": "node" }, "include": [ "src", diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..2d055a4 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,2098 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@eslint/eslintrc@^1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.3.tgz#2b044ab39fdfa75b4688184f9e573ce3c5b0ff95" + integrity sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.4.0" + globals "^13.15.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@humanwhocodes/config-array@^0.11.6": + version "0.11.8" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" + integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@mapbox/node-pre-gyp@^1.0.0": + version "1.0.10" + resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz#8e6735ccebbb1581e5a7e652244cadc8a844d03c" + integrity sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA== + dependencies: + detect-libc "^2.0.0" + https-proxy-agent "^5.0.0" + make-dir "^3.1.0" + node-fetch "^2.6.7" + nopt "^5.0.0" + npmlog "^5.0.1" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.11" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" + integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== + +"@types/body-parser@*": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/bytebuffer@^5.0.44": + version "5.0.44" + resolved "https://registry.yarnpkg.com/@types/bytebuffer/-/bytebuffer-5.0.44.tgz#553015fb34db1fc3eb3f7b232bff91c006c251a1" + integrity sha512-k1qonHga/SfQT02NF633i+7tIfKd+cfC/8pjnedcfuXJNMWooss/FkCgRMSnLf2WorLjbuH4bfgAZEbtyHBDoQ== + dependencies: + "@types/long" "^3.0.0" + "@types/node" "*" + +"@types/cli-color@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/cli-color/-/cli-color-2.0.2.tgz#01bd593722a12c26ec84c170ab251fe2d35856c5" + integrity sha512-1ErQIcmNHtNViGKTtB/TIKqMkC2RkKI2nBneCr9hSCPo9H05g9VzjlaXPW3H0vaI8zFGjJZvSav+VKDKCtKgKA== + +"@types/connect@*": + version "3.4.35" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + dependencies: + "@types/node" "*" + +"@types/express-serve-static-core@^4.17.31": + version "4.17.31" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz#a1139efeab4e7323834bb0226e62ac019f474b2f" + integrity sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + +"@types/express@^4.17.15": + version "4.17.15" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.15.tgz#9290e983ec8b054b65a5abccb610411953d417ff" + integrity sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.31" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/gifencoder@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/gifencoder/-/gifencoder-2.0.1.tgz#96e83022600e85640338ea76daea5327d84870eb" + integrity sha512-Ls78JLiLPHA1ytIXMWv/7/71a2Cz7BBnjgi9R/LFcIS531PEFYxPPGHNmBBnLekQ7/VpO+n1fgaJ6XD3ZkpApg== + dependencies: + "@types/node" "*" + +"@types/json-schema@^7.0.9": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + +"@types/long@^3.0.0": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@types/long/-/long-3.0.32.tgz#f4e5af31e9e9b196d8e5fca8a5e2e20aa3d60b69" + integrity sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA== + +"@types/mime@*": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" + integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== + +"@types/node@*", "@types/node@^18.11.15": + version "18.11.15" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.15.tgz#de0e1fbd2b22b962d45971431e2ae696643d3f5d" + integrity sha512-VkhBbVo2+2oozlkdHXLrb3zjsRkpdnaU2bXmX8Wgle3PUi569eLRaHGlgETQHR7lLL1w7GiG3h9SnePhxNDecw== + +"@types/pako@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/pako/-/pako-2.0.0.tgz#12ab4c19107528452e73ac99132c875ccd43bdfb" + integrity sha512-10+iaz93qR5WYxTo+PMifD5TSxiOtdRaxBf7INGGXMQgTCu8Z/7GYWYFUOS3q/G0nE5boj1r4FEB+WSy7s5gbA== + +"@types/qs@*": + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + +"@types/range-parser@*": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + +"@types/semver@^7.3.12": + version "7.3.13" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" + integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== + +"@types/serve-static@*": + version "1.15.0" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.0.tgz#c7930ff61afb334e121a9da780aac0d9b8f34155" + integrity sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg== + dependencies: + "@types/mime" "*" + "@types/node" "*" + +"@types/strip-bom@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/strip-bom/-/strip-bom-3.0.0.tgz#14a8ec3956c2e81edb7520790aecf21c290aebd2" + integrity sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ== + +"@types/strip-json-comments@0.0.30": + version "0.0.30" + resolved "https://registry.yarnpkg.com/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz#9aa30c04db212a9a0649d6ae6fd50accc40748a1" + integrity sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ== + +"@typescript-eslint/eslint-plugin@^5.46.1": + version "5.46.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.46.1.tgz#098abb4c9354e19f460d57ab18bff1f676a6cff0" + integrity sha512-YpzNv3aayRBwjs4J3oz65eVLXc9xx0PDbIRisHj+dYhvBn02MjYOD96P8YGiWEIFBrojaUjxvkaUpakD82phsA== + dependencies: + "@typescript-eslint/scope-manager" "5.46.1" + "@typescript-eslint/type-utils" "5.46.1" + "@typescript-eslint/utils" "5.46.1" + debug "^4.3.4" + ignore "^5.2.0" + natural-compare-lite "^1.4.0" + regexpp "^3.2.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/parser@^5.46.1": + version "5.46.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.46.1.tgz#1fc8e7102c1141eb64276c3b89d70da8c0ba5699" + integrity sha512-RelQ5cGypPh4ySAtfIMBzBGyrNerQcmfA1oJvPj5f+H4jI59rl9xxpn4bonC0tQvUKOEN7eGBFWxFLK3Xepneg== + dependencies: + "@typescript-eslint/scope-manager" "5.46.1" + "@typescript-eslint/types" "5.46.1" + "@typescript-eslint/typescript-estree" "5.46.1" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.46.1": + version "5.46.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.46.1.tgz#70af8425c79bbc1178b5a63fb51102ddf48e104a" + integrity sha512-iOChVivo4jpwUdrJZyXSMrEIM/PvsbbDOX1y3UCKjSgWn+W89skxWaYXACQfxmIGhPVpRWK/VWPYc+bad6smIA== + dependencies: + "@typescript-eslint/types" "5.46.1" + "@typescript-eslint/visitor-keys" "5.46.1" + +"@typescript-eslint/type-utils@5.46.1": + version "5.46.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.46.1.tgz#195033e4b30b51b870dfcf2828e88d57b04a11cc" + integrity sha512-V/zMyfI+jDmL1ADxfDxjZ0EMbtiVqj8LUGPAGyBkXXStWmCUErMpW873zEHsyguWCuq2iN4BrlWUkmuVj84yng== + dependencies: + "@typescript-eslint/typescript-estree" "5.46.1" + "@typescript-eslint/utils" "5.46.1" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.46.1": + version "5.46.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.46.1.tgz#4e9db2107b9a88441c4d5ecacde3bb7a5ebbd47e" + integrity sha512-Z5pvlCaZgU+93ryiYUwGwLl9AQVB/PQ1TsJ9NZ/gHzZjN7g9IAn6RSDkpCV8hqTwAiaj6fmCcKSQeBPlIpW28w== + +"@typescript-eslint/typescript-estree@5.46.1": + version "5.46.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.46.1.tgz#5358088f98a8f9939355e0996f9c8f41c25eced2" + integrity sha512-j9W4t67QiNp90kh5Nbr1w92wzt+toiIsaVPnEblB2Ih2U9fqBTyqV9T3pYWZBRt6QoMh/zVWP59EpuCjc4VRBg== + dependencies: + "@typescript-eslint/types" "5.46.1" + "@typescript-eslint/visitor-keys" "5.46.1" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.46.1": + version "5.46.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.46.1.tgz#7da3c934d9fd0eb4002a6bb3429f33298b469b4a" + integrity sha512-RBdBAGv3oEpFojaCYT4Ghn4775pdjvwfDOfQ2P6qzNVgQOVrnSPe5/Pb88kv7xzYQjoio0eKHKB9GJ16ieSxvA== + dependencies: + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.46.1" + "@typescript-eslint/types" "5.46.1" + "@typescript-eslint/typescript-estree" "5.46.1" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + semver "^7.3.7" + +"@typescript-eslint/visitor-keys@5.46.1": + version "5.46.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.46.1.tgz#126cc6fe3c0f83608b2b125c5d9daced61394242" + integrity sha512-jczZ9noovXwy59KjRTk1OftT78pwygdcmCuBf8yMoWt/8O8l+6x2LSEze0E4TeepXK4MezW3zGSyoDRZK7Y9cg== + dependencies: + "@typescript-eslint/types" "5.46.1" + eslint-visitor-keys "^3.3.0" + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^8.4.1, acorn@^8.8.0: + version "8.8.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" + integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +ajv@^6.10.0, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +"aproba@^1.0.3 || ^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + +are-we-there-yet@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" + integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +bytebuffer@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" + integrity sha512-IuzSdmADppkZ6DlpycMkm8l9zeEq16fWtLvunEwFiYciR/BHo4E8/xs5piFquG+Za8OWmMqHF8zuRviz2LHvRQ== + dependencies: + long "~3" + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +call-bind@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +canvas@^2.10.2, canvas@^2.2.0: + version "2.10.2" + resolved "https://registry.yarnpkg.com/canvas/-/canvas-2.10.2.tgz#66d827e24acd6c34667453728e13d337417d4b20" + integrity sha512-FSmlsip0nZ0U4Zcfht0qBJqDhlfGuevTZKE8h+dBOYrJjGvY3iqMGSzzbvkaFhvMXiVxfcMaPHS/kge++T5SKg== + dependencies: + "@mapbox/node-pre-gyp" "^1.0.0" + nan "^2.17.0" + simple-get "^3.0.3" + +chalk@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chokidar@^3.5.1: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +cli-color@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-2.0.3.tgz#73769ba969080629670f3f2ef69a4bf4e7cc1879" + integrity sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ== + dependencies: + d "^1.0.1" + es5-ext "^0.10.61" + es6-iterator "^2.0.3" + memoizee "^0.4.15" + timers-ext "^0.1.7" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-support@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +console-control-strings@^1.0.0, console-control-strings@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decompress-response@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-4.2.1.tgz#414023cc7a302da25ce2ec82d0d5238ccafd8986" + integrity sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw== + dependencies: + mimic-response "^2.0.0" + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-libc@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" + integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dotenv@^16.0.3: + version "16.0.3" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" + integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== + +dynamic-dedupe@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz#06e44c223f5e4e94d78ef9db23a6515ce2f962a1" + integrity sha512-ssuANeD+z97meYOqd50e04Ze5qp4bPqo8cCkI4TRjZkzAUgIDTrXV1R8QCdINpiI+hw14+rYazvTRdQrz0/rFQ== + dependencies: + xtend "^4.0.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@^0.10.61, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: + version "0.10.62" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" + integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + next-tick "^1.1.0" + +es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +es6-weak-map@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" + integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== + dependencies: + d "1" + es5-ext "^0.10.46" + es6-iterator "^2.0.3" + es6-symbol "^3.1.1" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== + +eslint@^8.29.0: + version "8.29.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.29.0.tgz#d74a88a20fb44d59c51851625bc4ee8d0ec43f87" + integrity sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg== + dependencies: + "@eslint/eslintrc" "^1.3.3" + "@humanwhocodes/config-array" "^0.11.6" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.1.1" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.3.0" + espree "^9.4.0" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.15.0" + grapheme-splitter "^1.0.4" + ignore "^5.2.0" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-sdsl "^4.1.4" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.1" + regexpp "^3.2.0" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" + text-table "^0.2.0" + +espree@^9.4.0: + version "9.4.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.1.tgz#51d6092615567a2c2cff7833445e37c28c0065bd" + integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg== + dependencies: + acorn "^8.8.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.3.0" + +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== + dependencies: + d "1" + es5-ext "~0.10.14" + +express@^4.18.2: + version "4.18.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.5.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +ext@^1.1.2: + version "1.7.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== + dependencies: + type "^2.7.2" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.9: + version "3.2.12" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + 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" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.14.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.14.0.tgz#107f69d7295b11e0fccc264e1fc6389f623731ce" + integrity sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg== + dependencies: + reusify "^1.0.4" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.2.7" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +gauge@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" + integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.2" + console-control-strings "^1.0.0" + has-unicode "^2.0.1" + object-assign "^4.1.1" + signal-exit "^3.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.2" + +get-intrinsic@^1.0.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" + integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + +gifencoder@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/gifencoder/-/gifencoder-2.0.1.tgz#fd363402e506529494757856aa66196697ee6bd4" + integrity sha512-x19DcyWY10SkshBpokqFOo/HBht9GB75evRYvaLMbez9p+yB/o+kt0fK9AwW59nFiAMs2UUQsjv1lX/hvu9Ong== + dependencies: + canvas "^2.2.0" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^13.15.0: + version "13.19.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.19.0.tgz#7a42de8e6ad4f7242fbcca27ea5b23aca367b5c8" + integrity sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ== + dependencies: + type-fest "^0.20.2" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ignore@^5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.1.tgz#c2b1f76cb999ede1502f3a226a9310fdfe88d46c" + integrity sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA== + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-core-module@^2.9.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== + dependencies: + has "^1.0.3" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-promise@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +js-sdsl@^4.1.4: + version "4.2.0" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.2.0.tgz#278e98b7bea589b8baaf048c20aeb19eb7ad09d0" + integrity sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ== + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +long@~3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" + integrity sha512-ZYvPPOMqUwPoDsbJaR10iQJYnMuZhRTvHYl62ErLIEX7RgFlziSBUUvrt3OVfc47QlHHpzPZYP17g3Fv7oeJkg== + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lru-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" + integrity sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ== + dependencies: + es5-ext "~0.10.2" + +make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memoizee@^0.4.15: + version "0.4.15" + resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72" + integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ== + dependencies: + d "^1.0.1" + es5-ext "^0.10.53" + es6-weak-map "^2.0.3" + event-emitter "^0.3.5" + is-promise "^2.2.2" + lru-queue "^0.1.0" + next-tick "^1.1.0" + timers-ext "^0.1.7" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-response@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43" + integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== + +minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.6: + version "1.2.7" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" + integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== + +minipass@^3.0.0: + version "3.3.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +minipass@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.0.0.tgz#7cebb0f9fa7d56f0c5b17853cbe28838a8dbbd3b" + integrity sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw== + dependencies: + yallist "^4.0.0" + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +nan@^2.17.0: + version "2.17.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" + integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== + +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +next-tick@1, next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +node-fetch@^2.0.0, node-fetch@^2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +nopt@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" + integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== + dependencies: + abbrev "1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npmlog@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" + integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== + dependencies: + are-we-there-yet "^2.0.0" + console-control-strings "^1.1.0" + gauge "^3.0.0" + set-blocking "^2.0.0" + +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.9.0: + version "1.12.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" + integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +once@^1.3.0, once@^1.3.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +pako@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" + integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +qs@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +regexpp@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve@^1.0.0: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^2.6.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-buffer@5.2.1, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +semver@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.3.5, semver@^7.3.7: + version "7.3.8" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== + dependencies: + lru-cache "^6.0.0" + +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.0: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.1.tgz#cc7ba77cfbe761036fbfce3d021af25fc5584d55" + integrity sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA== + dependencies: + decompress-response "^4.2.0" + once "^1.3.1" + simple-concat "^1.0.0" + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +source-map-support@^0.5.12: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-json-comments@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +tar@^6.1.11: + version "6.1.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.13.tgz#46e22529000f612180601a6fe0680e7da508847b" + integrity sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^4.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +timers-ext@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" + integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== + dependencies: + es5-ext "~0.10.46" + next-tick "1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + +ts-node-dev@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ts-node-dev/-/ts-node-dev-2.0.0.tgz#bdd53e17ab3b5d822ef519928dc6b4a7e0f13065" + integrity sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w== + dependencies: + chokidar "^3.5.1" + dynamic-dedupe "^0.3.0" + minimist "^1.2.6" + mkdirp "^1.0.4" + resolve "^1.0.0" + rimraf "^2.6.1" + source-map-support "^0.5.12" + tree-kill "^1.2.2" + ts-node "^10.4.0" + tsconfig "^7.0.0" + +ts-node@^10.4.0: + version "10.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tsconfig@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-7.0.0.tgz#84538875a4dc216e5c4a5432b3a4dec3d54e91b7" + integrity sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw== + dependencies: + "@types/strip-bom" "^3.0.0" + "@types/strip-json-comments" "0.0.30" + strip-bom "^3.0.0" + strip-json-comments "^2.0.0" + +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== + +typescript@^4.9.4: + version "4.9.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.4.tgz#a2a3d2756c079abda241d75f149df9d561091e78" + integrity sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== + dependencies: + string-width "^1.0.2 || 2 || 3 || 4" + +word-wrap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +xtend@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==